Epoch或Unix时间 - Long.MAX_VALUE人类可读日期

时间:2013-11-20 22:59:05

标签: java time long-integer unix-timestamp epoch

如果存储在毫秒中,值dateTime的人类可读日期是多少? Epoch是1970年1月1日星期四,我的意思是Java长期。

long dateTime = Long.MAX_VALUE; 

当我给它们这么大的值时,所有在线工具似乎都会崩溃。

3 个答案:

答案 0 :(得分:10)

System.out.println(new java.util.Date(Long.MAX_VALUE).toGMTString());
// output:  17 Aug 292278994 07:12:55 GMT

答案 1 :(得分:4)

我选择了Matt Johnson的correct answer并在OS {X(Mountain Lion)上的Java 7上的Joda-Time 2.3中尝试过。我得到了同样的结果。

// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.

System.out.println( "Long.MAX_VALUE: " + Long.MAX_VALUE );
org.joda.time.DateTime endOfTime = new org.joda.time.DateTime( Long.MAX_VALUE );
org.joda.time.DateTime endOfTimeUtc = endOfTime.toDateTime( org.joda.time.DateTimeZone.UTC );
System.out.println( "endOfTimeUtc: " + endOfTimeUtc );

跑步时......

Long.MAX_VALUE: 9223372036854775807
endOfTimeUtc: 292278994-08-17T07:12:55.807Z

所以我们已经有超过25亿年的时间了。

答案 2 :(得分:2)

如果我检查current time in millis,我会得到这样的信息:1385148606519。如果乘以1000,则得到1385148606519000,即UTC 8月12日45863 2:48:39 UTC。如果您随后将第一个数字从1更改为8,则会得到8385148606519000,这是星期四10月12日267684 3:15:19 UTC。通过这种渐进的变化,我可以到达最远的日期,不会崩溃Javascript:8640000007200000,这是星期六9月13日275760 3:00:00 AM。我不知道是否有一种可靠的方法来实际计算你想要的确切数字......我可以问你需要什么吗? :)

为简单起见,您可以尝试考虑否。一年365天的毫升数:31556952000。因此忽略了任何类型的闰秒或年,我们可以将MAX_VALUE除以1970年的9223372036854775807/31556952000 = 292277024.627年,这可能意味着某些年份在292278994附近。