我不认为这是一个错误,而是对行的错误理解:
f.setTimeZone(TimeZone.getTimeZone("Europe/Madrid")); result = f.parse(d); log.info("The result should be 10:34 CEST: {}", result);
这是什么意思 ?
您首先设置一个时区,告诉解析器您将要解析欧洲/马德里时区的时间。
然后显示它。它无法猜测您希望在哪个时区,因此它以默认时区(在您的情况下为UTC)显示。
注意:
- 它实际上是UTC的10:34,而马德里是12:34,而不是相反。
Date.getTimezoneOffset()
是UTC与默认时区(在您的情况下为0)之间的偏移量,与用于配置解析器的时区无关。此外,从Java 1.1开始不推荐使用,您不再应该真正使用它。
要显示不同时区的日期值,
SimpleDateFormat.format()可以使用,例如:
f.setTimeZone(TimeZone.getTimeZone("UTC")); log.info("UTC {}", f.format(new Date())); f.setTimeZone(TimeZone.getTimeZone("Europe/Madrid")); log.info("Europe/Madrid {}", f.format(new Date()));
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)