toEpochMilli的Java字符串DateTime-不同区域
我正在为toEpochMilli开发一种字符串转换方法。但是,当我在不同的时区服务器上发布代码时,得到的结果不同。如何解决toEpochMilli的Java字符串DateTime-不同区域,java,timezone,epoch,region,datetime-conversion,Java,Timezone,Epoch,Region,Datetime Conversion,我正在为toEpochMilli开发一种字符串转换方法。但是,当我在不同的时区服务器上发布代码时,得到的结果不同。如何解决 //input = "2019-12-26T00:00:00" private static Long converter(String stringDate) { try { LocalDateTime dateTime = LocalDateTime.parse(stringDate, DateTimeForma
//input = "2019-12-26T00:00:00"
private static Long converter(String stringDate) {
try {
LocalDateTime dateTime = LocalDateTime.parse(stringDate, DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"));
ZoneId zoneId = ZoneId.of("America/Sao_Paulo");
return dateTime.atZone(zoneId).toInstant().toEpochMilli();
} catch (DateTimeParseException dte) {
throw new DateException("Invalid input format", dte);
}
}
圣保罗输出转换为LocalDateTime的结果与输入相同,但北弗吉尼亚输出转换为LocalDateTime的结果与输入不同
public static String backConverter(Long epochMilli) {
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(epochMilli), ZoneId.of("America/Sao_Paulo"));
return DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss").format(localDateTime);
}
此解决方案在不同的地方工作,具有相同的输出
//input = "2019-12-26T00:00:00"
private static Long converter(String stringDate) {
try {
LocalDateTime dateTime = LocalDateTime.parse(stringDate, DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"));
ZoneId zoneId = ZoneId.systemDefault();
return dateTime.atZone(zoneId).toInstant().toEpochMilli();
} catch (DateTimeParseException dte) {
throw new DateException("Invalid input format", dte);
}
}
public static String backConverter(Long epochMilli) {
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(epochMilli), ZoneId.systemDefault());
return DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss").format(localDateTime);
}
你能告诉我们你在哪里把这么长的代码转换回LocalDateTime吗?你用哪个时区来做这个?你能显示你得到的输出吗?对我来说,在圣保罗运行时,您的代码运行良好=2019-12-26T00:00:00两个时区的输入是否相同@phdias我相信你的输入在不同的时间区域发生了变化,我无法复制。我在美国/纽约时区的JVM上调用了converter,然后调用了backConverter,我认为弗吉尼亚州属于这个时区。我得到2019-12-26T00:00:00。我还尝试修改了两种方法以使用该时区。还是一样的结果,请