【发布时间】:2021-01-08 14:40:00
【问题描述】:
尝试在 Date 中设置 timeZone(我知道 Date 已被弃用)
LOG.error(modifiedDate + "Date in service"); //Mon Sep 21 06:15:00 CDT 2020
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z", Locale.ENGLISH);
format.setTimeZone(TimeZone.getDefault());
String dateString = format.format(modifiedDate);
LOG.error(dateString + " dateString"); //2020-09-21 06:15:00 -0500
Date date = format.parse(dateString);
LOG.error(date + " date after parsing"); //Mon Sep 21 06:15:00 CDT
解析后时区没有改变,我错过了什么?
【问题讨论】:
-
我知道 Date 已被弃用 ==> 你为什么要使用它?有必要吗?
-
是的,我必须这样做,因为我的对象 atm 必须是 Date。
-
这能回答你的问题吗? How to set time zone of a java.util.Date?
-
然后使用旧的兼容方法:
Date.toInstant()和Date.fromInstant(Instant instant),并在两者之间使用java.time执行转换和计算。说真的,这听起来很愚蠢但会更好,甚至可能会鼓励你完全避免使用java.util.Date...