【发布时间】:2018-05-23 13:56:42
【问题描述】:
我有以下代码。 java日期时间的字符串形式为gmt+0。因此我需要稍后根据不同的本地时区对其进行转换,但是当我尝试设置默认时区时,它会再返回 8 小时,因为我的机器在 gmt+8 上。输出显示我 2017-12-09 09:00 :00 但我想保持为 2017-12-09 17:00:00 因为这是 gmt+0。
String existingTime = "2017-12-09 17:00:00";
String newTime = "2017-12-09 14:00:00";
Date existingDateTime = null;
Date newDateTime = null;
Date localexistingDateTime = null;
Date localnewDateTime = null;
DateFormat dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
TimeZone tz = TimeZone.getDefault();
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
// sdf.setTimeZone(TimeZone.getTimeZone("GMT+8:30"));
try {
existingDateTime = dateTimeFormat.parse(existingTime);
newDateTime = dateTimeFormat.parse(newTime);
System.out.println("GMT existingDateTime" + sdf.format(existingDateTime));
System.out.println("GMT newDateTime" + sdf.format(newDateTime));
} catch (ParseException ex) {
System.out.println("MyError:Parse Error has been caught for date parse close");
ex.printStackTrace(System.out);
}
【问题讨论】:
-
我不能更强烈地建议不要使用旧版
java.util.Date,这是原因之一。相反,您应该在适合您的用例的java.time包中查找适当的类。 -
我的建议是停止使用
java.util.Date并改用java.time包中的类。 -
我把你推荐给this question。
-
已经有很多关于时区转换的问答。你看了吗?我建议这样做。我也同意 Joe C 的观点,所以特别是使用
java.time寻找答案,有一些。 -
@OleV.V.好的,如果没有,我会得到一些答案,我会提出一个新问题,谢谢。