如果我跑
SimpleDateFormat("yyyy-MM-dd HH:mm:ss",Locale.ENGLISH).format(new Date())
在Android设备模拟器的应用程序中,其时区设置为IST(GMT + 05:30),它给了我当地时间。如果我不断更改手机设置中的时区并运行它,我将继续获得适当的当地时间。
但是Date()
应该返回UTC时间,而不是特定于时区的本地时间。为什么不发生?
如果我运行
,我可以获得UTC(实际上是GMT)时间select datetime('now')
在应用程序内的SQLite数据库中。
答案 0 :(得分:0)
SimpleDateFormat
默认为当前时区。
在格式化程序上调用setTimeZone()
,使其格式化为其他时区。
Date
的内部表示形式为UTC。
每个SimpleDateFormat实例都有一个TimeZone。这是因为它需要格式化Date的实例,它表示UTC的绝对时间。也就是说,Date不携带时区信息。默认情况下,SimpleDateFormat将使用系统的默认时区。