如何从Java的纪元(1970-01-01)中获得毫秒数?


78

我需要获取从1970-01-01 UTC到现在的Java UTC的毫秒数。

我还希望能够获得从1970-01-01 UTC到任何其他UTC日期时间的毫秒数。



1
它没有显示任何研究成果。
jlordo

1
@PaulG-拒绝投票的第一原因是研究努力。这个问题由一个简单的谷歌解决。
Brian Roach 2012年

Answers:


162

怎么System.currentTimeMillis()

从JavaDoc:

返回值: 当前时间与1970年1月1日午夜之间的差值(以毫秒为单位)

Java 8引入了java.time框架,特别是Instant在时间轴上为...点建模... ”的类:

long now = Instant.now().toEpochMilli();

返回: 自1970-01-01T00:00:00Z的纪元以来的毫秒数,即与上面的代码几乎相同:-)

干杯,


3
由于这个答案是在2012年,而Java 8并未出现,因此它是一个很好的答案。同样好是Prezemek的java.time答案。考虑当前的Java 8 java.time框架。
扎克·詹森

1
对于Edification:我测试了几种方法来获取以毫秒为单位的UTC时间,并发现java.time.Instant.now()。toEpochMilli可以正常工作。我将其与ZonedDateTime.now(ZoneOffset.UTC)方法选项(我在其他文章中将其视为选项)进行了比较,并且正如预期的那样,Java.time.Instant.now()方法在我的机器上快了一点……连续三十次运行的低单位毫秒数。
扎克·詹森

还要记住,System.currentTimeInMs()它不会每毫秒更新一次!
穴居人



0

您也可以尝试

  Calendar calendar = Calendar.getInstance();
  System.out.println(calendar.getTimeInMillis());

getTimeInMillis()-当前时间,以纪元为单位的UTC毫秒


2
这个可怕的日期时间类在几年前被JSR 310定义的现代java.time类所取代。请参见Bystrup&Hack-R的答案
Basil Bourque

java.time.Instant本答案本答案中
Basil Bourque
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.