new Date()返回本地时间而不是UTC

时间:2014-09-08 07:20:27

标签: android

如果我跑

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数据库中。

1 个答案:

答案 0 :(得分:0)

SimpleDateFormat默认为当前时区。

在格式化程序上调用setTimeZone(),使其格式化为其他时区。

Date的内部表示形式为UTC。

来自documentation

  

每个SimpleDateFormat实例都有一个TimeZone。这是因为它需要格式化Date的实例,它表示UTC的绝对时间。也就是说,Date不携带时区信息。默认情况下,SimpleDateFormat将使用系统的默认时区。