【发布时间】:2019-09-01 11:10:41
【问题描述】:
我从服务器获取了 iso8601 格式的日期
serverTimeDateFormat.parse("2019-04-10T16:04:14.677Z")
当我解析日期时,它给出了与我的位置相对应的时间,但它晚了 1 小时(GMT+1,而它是 GMT+2) 解决方案是什么?我怎么能认为已经切换到夏令时,但它仍然是基于冬令时计算的
【问题讨论】:
-
顺便考虑扔掉长期过时且臭名昭著的麻烦
SimpleDateFormat和朋友,并将ThreeTenABP添加到您的Android项目中,以便使用java.time,现代Java日期和时间API .使用起来感觉好多了。 -
恐怕解决方法是正确解析字符串!尾随
Z是距 UTC 的 0 偏移量。如果您这样传递它并转换为正确的时区(例如,欧洲/柏林)(使用 java.time)或确保您的SimpleDateFormat(我不想使用)设置了正确的时区,其余的都是自动的。哪些时区有夏令时 (DST),哪些日期之间是 Java 内置的,不需要您(应用程序程序员)特别注意。 -
Java set timezone does not default to gmt+0 可能几乎重复。不过,该问题并未处理原始字符串中的“Z”。
标签: java android simpledateformat