-2
我在后端生成一些UTC时间,并使用websockets将它发送到我的Android应用程序。错误的时区信息与Java JodaTime
问题是:当我显示日期时,它的背后是3小时,这是因为我假设我的手机处于+3时区。
下面是来自后台代码和Android代码的摘录。
后端代码(这就是如何我现在用的那一刻库生成UTC日期):
let d = moment.utc().toISOString();
在我的Android应用程序,这是怎么了处理它:
String sendDate = "2017-04-19T15:41:36.758Z"; //this is an example server response
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
dtf.parseLocalDateTime(sendDate).toDate()
的问题是UTC日期未正确显示/转换为手机当前所在的时区,因此日期始终延迟3小时。
我错过了什么?
你检查手机的默认'TimeZone'('DateTimeZone.getDefault()'的结果)? – 2017-04-19 16:30:21
什么是你得到输出vs预期输出? – 2017-04-19 16:44:37
尝试'dtf.parseLocalDateTime(sendDate).toDate(DateTimeZone.UTC)',因为我害怕没有参数的'toDate()'隐式使用系统时区(Joda-Time的数据)。并且你的'LocalDateTime'显然是基于UTC输入的...... –