2014-09-10 121 views
1

当我用System.currentTimeMillis()来测量时间,它是安全的吗?System.currentTimeMillis测量时间

E.g.当发生时移时(夏季 - >冬季),这会产生一个错误吗?

+0

你的意思是白天节省时间? AFAIK,它不会影响。 – blackSmith 2014-09-10 13:00:27

+0

阅读[文档!](http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#currentTimeMillis%28%29) – 2014-09-10 13:01:07

回答

5

否,System.currentTimeMillis()返回自Unix纪元(UTC 1970年1月1日开始的午夜)起经过的毫秒数。这不是而是完全取决于您当地的时区。

换句话说,如果你每秒一次调用它,它会总是约1000增加(“关于”仅仅是由于时钟精度和通话是不可能被正是间隔1秒) 。无论您的本地时区是否更改其与UTC的偏移量,或者甚至更改了整个时区,都无关紧要。

从理论上讲,闰秒使得所有这一切变得更加棘手 - 但实际上大多数应用程序可以通过理论上将他们的手指伸入耳朵并说“我不在Leap Second先生家中”。

+0

好的,非常感谢你 – matthias 2014-09-10 13:01:25

1

System.currentTimeMillis()将返回自epoch (1/1/1970 00:00:00)以来的毫秒数。这些解释如何是一个完全不同的故事(夏季/冬季以及时区属于解释部分)。所以是的,这将是保存。