System.currentTimeMillis()返回UTC时间吗?

g.r*_*ion 81 java datetime android utc java.util.date

我想以毫秒获得当前的UTC时间.我搜索了谷歌并得到了一些回答,System.currentTimeMillis()确实返回UTC时间.但事实并非如此.如果我这样做:

long t1 = System.currentTimeMillis();
long t2 = new Date().getTime();
long t3 = Calendar.getInstance().getTimeInMillis();
Run Code Online (Sandbox Code Playgroud)

所有三次几乎相同(由于通话,差异以毫秒为单位).

t1 = 1372060916
t2 = 1372060917
t3 = 1372060918
Run Code Online (Sandbox Code Playgroud)

这个时间不是UTC时间,而是我的时区时间.我怎样才能在android中获得当前的UTC时间?

Jon*_*eet 119

您显示的所有三行都将给出自unix时期以来的毫秒数,这是一个固定的时间点,不受当地时区的影响.

你说"这个时间不是UTC时间" - 我怀疑你确实错误地诊断出来了.我建议使用epochconverter.com.例如,在您的示例中:

1372060916 = Mon, 24 Jun 2013 08:01:56 GMT
Run Code Online (Sandbox Code Playgroud)

我们不知道您何时生成该值,但除非它实际上是在UTC时间上午8:01,否则系统时钟会出现问题.

它本身System.currentTimeMillis的价值也不会Date受到时区的影响.但是,您应该知道Date.toString() 确实使用了本地时区,这会误导许多开发人员认为a Date本身与时区相关联 - 它不是,它只是一个时间点,没有相关的时区甚至日历系统.

  • 男人,这让我希望世界能够(可以)采用一个时区.谁关心时钟上的数字是00:00还是08:00,天空中出现了大亮点?在这个历史遗迹上浪费了无数个小时的生产时间,这让我热血沸腾...... (11认同)
  • 所以基本上,也就是说,如果从不同的时区同时调用此函数,则无论主机的时钟如何,都会返回相同的值,对吗? (6认同)