我阅读了ZoneDate和instant的相关文献,发现我可以通过以下方式将本地时间转换为utc:
LocalDate d = LocalDate.now();
LocalTime time = LocalTime.of(00, 00, 00);
ZoneId zone = ZoneId.systemDefault();
ZonedDateTime zonedDateTime = ZonedDateTime.of(d, time, zone);
System.out.println(zonedDateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
Instant instant = zonedDateTime.toInstant();
System.out.println(instant);
问题是输出如下所示:
2018-11-26T00:00:00
2018-11-26T08:00:00Z
我正在尝试以“yyyy-mm-dd hh:mm:ss”的格式获取这两个字符串,但是很难让任何东西正常工作。因为我使用输出来查询mysql数据库,所以我可以手动执行以下操作:
String zoneDate = zonedDateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
String utcDate = zonedDateTime.toInstant().toString();
zoneDate = zoneDate.replace('T', ' ').replace('Z', ' ');
utcDate = utcDate.replace('T', ' ').replace('Z', ' ');
我的新输出是:
2018-11-26 00:00:00
2018-11-26 08:00:00
但我觉得这是一个糟糕的做法,应该有一个方法在类中转换成正确的格式。是否有这样一种方法可以从默认类执行上述格式设置?
1条答案
按热度按时间bzzcjhmw1#
遵循下面的代码段。
输出为
有关更多信息,请访问java文档->https://docs.oracle.com/javase/8/docs/api/java/time/format/datetimeformatter.html