我需要代码方面的帮助。 我的API具有UTC格式的时间戳,因此我需要将其转换为本地时间戳,即CST。
例如: 我的API的时间戳记值为:2019-01-08T13:17:53.4225514(采用UTC格式)。
我需要输出类似于2019年1月8日上午8:28:18.514(在CST中是我的本地时间)
如何在本地时间戳中转换它?
时间戳createdOn = api.getCreatedOn(); (在这里,我从api获取TimeStamp作为对象)
答案 0 :(得分:1)
毕竟很难做到。
以下是您解析UTC中的String时间戳以获取您首选时区的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);