java - Java String DateTime 到 toEpochMilli - 不同的区域
问题描述
我正在为 toEpochMilli() 开发一个字符串转换方法。但是当我在不同的时区区域服务器上发布代码时,我得到了不同的结果。怎么解决 ?
//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);
}
}
Sao Paulo 输出转换为 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);
}
推荐阅读
- pytorch - cuDNN 错误:使用天赋时 CUDNN_STATUS_EXECUTION_FAILED
- c - 从结构数组中交换两个结构(冒泡排序)
- mysql - nodejs从函数返回结果
- android - 在 NATIVE android 中滚动内容时使用自定义动画标记和区域焦点构建地图
- javascript - 即使操作成功,ajax post也返回404
- sql - 操作必须使用可更新查询
- google-cloud-platform - 谷歌云是否有类似“lambda@edge 原始响应”的东西
- python - 列表理解而不保存它与单行 for 循环
- python - 在 Jupyter 笔记本之外运行时出现代码错误
- python - 如何使用list_filter在django admin中过滤多个相同字段的值?