Преобразовать метку времени из API в локальную метку времени - PullRequest
0 голосов
/ 08 января 2019

Мне нужна помощь с кодом. У моего API есть TimeStamp в формате UTC, и мне нужно преобразовать его в мой локальный TimeStamp, т.е. CST.

Например: Мой API имеет значение TimeStamp как: 2019-01-08T13: 17: 53.4225514 (который находится в UTC).

Мне нужно, чтобы выходные данные были такими, как 8 января 2019 г. 8: 28: 18.514 (что находится в CST по местному времени)

Как конвертировать его в локальную метку времени?

метка времени созданного времени = api.getCreatedOn (); (ЗДЕСЬ я получаю метку времени как объект от API)

1 Ответ

0 голосов
/ 09 января 2019

Оказывается, все-таки сложно сделать все правильно.

Вот как вы анализируете временную метку String в UTC для получения объекта ZonedDateTime вашего предпочтительного часового пояса:

// define formatter once to be re-used wherever needed
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
        .appendPattern("yyyy-MM-dd'T'HH:mm:ss") // all fields up seconds
        .appendFraction(ChronoField.NANO_OF_SECOND, 0, 9, true) // handle variable-length fraction of seconds
        .toFormatter();

String text = "2019-01-08T13:17:53.4225514";

LocalDateTime localTime = LocalDateTime.parse(text, formatter); // parse string as a zone-agnostic LocalDateTime object
ZonedDateTime utcTime = localTime.atZone(ZoneId.of("UTC")); // make it zoned as UTC zoned
ZonedDateTime cstTime = utcTime.withZoneSameInstant(ZoneId.of("America/Chicago")); // convert that date to the same time in CST

// print resulting objects
System.out.println(utcTime);
System.out.println(cstTime);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...