【发布时间】:2020-11-12 09:11:34
【问题描述】:
我正在使用一个应用程序,它每隔几秒就从一个位置对象创建一个新的Date() 对象:
val logDate = Date(location.time).toString()
Log.d("test", "$logDate")
每隔几秒,日期就会记录到控制台:
D/测试:2020 年 7 月 22 日星期三 12:02:14 MDT
D/测试:2020 年 7 月 22 日星期三 12:02:19 MDT
如果我随后进入设备上的日期和时间设置并手动将时区更改为布宜诺斯艾利斯,将开始打印以下内容:
D/测试:2020 年 7 月 22 日星期三 15:02:24 GMT-03:00
D/测试:2020 年 7 月 22 日星期三 15:02:35 GMT-03:00
请注意添加了“GMT-03:00”。由于格式的变化,这种格式的变化会导致应用程序更深层次的各种解析相关的异常。
问题:
- 为什么切换时区后格式会改变?
- 有没有办法确保只使用一种格式?
谢谢!
【问题讨论】:
-
显式格式化字符串?我是 ISO8601 的粉丝,而且..
-
改用日历
-
@user2864740 ISO8601 正在其他地方使用。这不是问题,并且与发布的问题无关,因为这些问题与通过
Date()构建日期以及默认情况下表示该日期的格式特别相关。有趣的是,在某些情况下,Date()的字符串表示不被接受为其自己的构造函数Date(s: String)的有效格式。 -
@Style-7 我很欣赏您的评论,但交换实现并不能解决问题。
-
使用 SimpleDateFormat
标签: android date kotlin timezone