【发布时间】:2014-02-17 13:33:56
【问题描述】:
我需要在我的 java 应用程序中显示 CET 中的时区。 我正在使用以下代码来实现这一点。
String OLD_FORMAT = "yyyyMMdd HH:mm:ss";
String NEW_FORMAT = "dd.MM.yyyy HH:mm:ss";
String date = "20140217 14:45:28";
SimpleDateFormat sdf = new SimpleDateFormat(OLD_FORMAT);
TimeZone zone = TimeZone.getTimeZone("GMT+1");
sdf.setTimeZone(zone);
Date d = null;
d = sdf.parse(date);
sdf.applyPattern(NEW_FORMAT);
date = sdf.format(d);
我正在使用日期对象在 UI 上打印日期。
或
TimeZone zone = TimeZone.getTimeZone("CET");
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
sdf.setTimeZone(zone);
但使用上述任一代码,我得到的 GMT 时间比 CET 晚一小时。
例如,如果我现在执行代码,我将得到 1:32:50 PM 其中的 2:32:50 PM 根据http://wwp.greenwichmeantime.com/time-zone/europe/european-union/central-european-time/
有人知道这里可能出了什么问题吗?
更新:我发现了问题。我犯了一个愚蠢的错误,因为我必须先将时间设置为格林威治标准时间(我得到的日期时间是格林威治标准时间),然后将其更改为 CET。它现在工作。非常感谢大家的回复。
【问题讨论】:
-
你能显示你的代码吗,打印时间?
-
看起来不错 - 您究竟如何使用
SimpleDateFormat对象? -
我对其进行了测试,在
Date上调用sdf.format并使用您的 2 代码 sn-p 获得适当的时间。 -
我已经更新了整个代码。请立即查看
-
您输入的日期时间
20140217 14:45:28已经在 CET 中了吗?或者是 UTC/GMT 的日期时间,您想将其调整一小时以比 UTC 提前一小时?
标签: java jakarta-ee datetime timezone timezone-offset