невозможно передать дату и время в Google Appengine из jsp формы - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь сохранить дату и время, передав их через пользователя, из внешнего интерфейса, созданного в JSP и полученного сервлетом java. Ниже приведен код моего JSP:

<form role="form" action="/abc" method="post">

            <div class="form-group">
                <div class="input-group">

                    <input type="hidden" name="div_bvg" type="number" class="form-control" value="0" required/>
                </div>
            </div>

            Enter the Details: 
                <div class="input-group">
                    <span class="input-group-addon">End Date</span>
                    <input name="div_enddate" type="datetime-local"  class="form-control" required/>
                </div>

            </div>

            <a href="/dashboard" class="btn btn-default">Cancel</a>
            <button type="submit" class="btn btn-success">Save</button>

        </form> 

Ниже приводится получение через мой сервлет

 DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
 String sdate = request.getParameter("div_enddate").trim();
 DateTime enddate = new DateTime(edate);
 Entity election = new Entity("example");
 election.setProperty("EndTime", enddate);


Transaction txn = datastore.beginTransaction();
datastore.put(txn,election);
txn.commit();

if (txn.isActive()) { //if trnasaction is still active (which means not committed properly then it rollbacks)
    txn.rollback();
  }

Ниже приводится ошибка, которую я получаю при отправке

java.lang.NumberFormatException: Invalid date/time format: 2020-01-01T01:00

1 Ответ

0 голосов
/ 28 января 2020

Мне непонятно, как вы используете это время в своем интерфейсе, но вы передаете неверный формат времени в Java.

В вашем интерфейсе вы используете этот формат:

yyyy-MM-dd'T'HH:mm

Java ожидайте этот формат:

yyyy-MM-dd HH:mm:ss.SSS

У вас есть 2 варианта

  1. Вы можете преобразовать формат времени в своем интерфейсе, чтобы он соответствовал java формату даты , Это рекомендуется, потому что вы удаляете рабочую нагрузку из своего бэкэнда.
  2. Анализируйте дату в бэкэнде как строку, а затем удалите "T" и затем используйте ее как дату, то есть

Java преобразование формата времени:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
SimpleDateFormat output = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = sdf.parse(time);
String formattedTime = output.format(d);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...