У меня есть приложение Spring Boot, развернутое в Pivotal Cloud Foundry, написанное на Java. Существует серверное приложение, которое выполняет вызов POST REST для этого приложения. В качестве полезной нагрузки используется дата и время, я сохраняю параметр в виде строки в объекте closeRequest из приложения сервера:
class closeRequest
{
String dueDateGmt;
Integer orgId;
Boolean closeFlag;
String strategyName;
}
Я форматирую dueDateGmt следующим образом: 2019-03-12T15: 00: 47-05: 00
DueDateGmt устанавливается в приложении сервера. У меня есть отладочные операторы, чтобы увидеть значение.
Когда я использую Postman для запуска строки JSON в приложении Spring Boot, ответ успешен.
Когда я запускаю приложение с помощью серверного приложения, чтобы выполнить вызов REST для приложения Spring Boot, значение dueDateGmt в загрузочном приложении Spring равно null.
class closeRequest
{
ZonedDateTime dueDateGmt;
Integer orgId;
Boolean closeFlag;
String strategyName;
}
Я не понимаю, как взять JSON и перевести строковую дату в ZonedDateTime.
Когда переменная представляет собой Integer, Float или String, отображение из
JSON (строка) -> Integer, Float, String - автоматически.
В настоящее время это то, что я делаю ..
- Серверное приложение - ZonedDateTime - dueDate - преобразовано в строку
- Отправлено в приложение SpringBoot через JSON
- Приложение Spring Boot - отображается ZonedDateTime dueDate - оно пустое.
UPDATE
Серверное приложение получает дату из приложения в нетрадиционном формате. Это выглядит так:
2019 3 5 11 30 30 -5
ГГГГ М Д ЧЧ ММ сс GMT
Я преобразую его, используя собственный метод, который я написал, в обычный формат, например, такой: 2019-03-12T15: 00: 47-05: 00
Это метод:
public static String formatScannerDateTimeToDateTimeString(String dateTimeString)
{
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy d M H m s Z", Locale.ENGLISH);
ZonedDateTime zonedDateTime = ZonedDateTime.parse(adjustTZ(dateTimeString), formatter);
return zonedDateTime.toString();
}
public static String adjustTZ(String dateTimeStamp)
{
StringBuilder adjustedDateTimeStamp = new StringBuilder(dateTimeStamp);
if (dateTimeStamp != null)
{
int tzPos = dateTimeStamp.indexOf('-');
if (tzPos > -1)
{
adjustedDateTimeStamp = new StringBuilder(dateTimeStamp.substring(0, tzPos+1));
String tzPortion = dateTimeStamp.substring(tzPos+1);
adjustedDateTimeStamp.append(("00" + tzPortion).substring(tzPortion.length()));
adjustedDateTimeStamp.append("00");
}
}
return adjustedDateTimeStamp.toString();
}