В JShell (Java Version 14)
Я запустил ваш код и смог получить аналогичные результаты (конечно, это в GMT, а не в UTC; однако секунды смещены на ту же величину, что и ваш текущий результат):
If the question is about UTC:
I would suggest to use Instant
, поскольку он позволяет избежать многих проблем, которые LocalDateTime
представляли за эти годы. Как упоминалось в комментариях, обычно лучше избегать использования java.util.Date
и использовать вместо него Instant
(или вы можете использовать более традиционный LocalDateTime
).
Если вы говорите о Spring
' s аннотированный @PostMapping
метод для автоматического анализа даты, вы можете использовать что-то вроде:
@PostMapping
public String postDate(@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) Long dateReq) {
Instant date = Instant.ofEpochMilli(dateReq);
System.out.println(date);
}
Если вы хотите использовать свой собственный форматировщик, вы можете сделать @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSSSS" LocalDateTime date)
в качестве параметра postDate
Обратите внимание, что в документации Spring
указано, что поле шаблона @DateTimeFormat
использует те же шаблоны, что и java.text.SimpleDateFormat
. Так что это может быть полезно.