Java中的最短日期

Minimum date in Java

Java中的最小日期值是多少?


不要忘记日期构造函数乐于接受负值。

1
Date date = new Date(Long.MIN_VALUE);

退货

Sun Dec 02 22:47:04 BDT 292269055

我想那是关于大爆炸的时间

编辑

正如MartinClayton所回答的,你可以使用日历类来检查时代。这将输出0,代表BCE:

1
2
3
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date(Long.MIN_VALUE));
System.out.println(calendar.get(Calendar.ERA));


如果你说java.util.Date是时间戳,你可以这样做。

你会看到这代表1970年1月1日格林威治标准时间01:00:00星期四

正如Tulskiy指出的,可以将负值传递给日期构造函数。如果我们这样做并使用日期格式,包括我们可以看到的时代:

1
2
3
Date d = new Date(Long.MIN_VALUE);
DateFormat df = new SimpleDateFormat("EEE, d MMM yyyy G HH:mm:ss Z");
System.out.println(df.format(d));

显示:Sun,2 Dec 292269055 BC 16:47:04+0000


其他答案可能是正确的,但使用过时的课程。

java.time时间

旧的DealTimes类(Java.U.L.Deal/Calm等)已经被JavaTimeFramework内置到Java 8和以后的版本中取代。

JavaTime类是由JoDA时间启发的,由JSR 310定义,由TrutEnEnter Project扩展,通过TeReTeNeN后端项目返回到Java 6和7,并适用于TruteTeNABP项目中的Android。请参见教程。

在UTC时间轴上的一刻,分辨率为纳秒,使用Instant。考虑到与UTC的偏差,使用OffsetDateTime。对于时区(偏移量+异常规则),使用ZonedDateTime,但本质上没有定义最小值,ZoneId也没有定义。对于没有时间和时区的日期值,请使用LocalDate。对于没有日期和时区的时间值,使用LocalTime。对于没有时区的日期时间,使用LocalDateTime

  • Instant.MIN=-1000000000-01-01T00:00Z
  • OffsetDateTime.MIN=-999999999-01-01T00:00:00+18:00
  • LocalDate.MIN=-999999999-01-01
  • LocalTime.MIN=00:00
  • LocalDateTime.MIN=-999999999-01-01T00:00:00
  • Year.MIN_VALUE=-999,999,999
  • ZoneOffset.MIN=-18:00(但实际上-12:00)

小心:小心使用这些值作为某种标志或特殊含义。许多其他软件库和数据库可能不支持这些极端值。

对于一个标志或特殊含义,如非空"无可用值",我建议选择一个任意的时刻,但避免走到这样的极端,要么向后,要么向前。可能是UNIX历元参考日期,UTC中的第一个时刻1970,1970-01-01T0:00:0:00。


它和日历课程一样。

试试这个:

1
2
Date d = new Date( Long.MIN_VALUE );
System.out.println( d );

你会看到:

1
Sun Dec 02 16:47:04 GMT 292269055

但是默认的日期格式不包括纪元,纪元就是这个日期的BCE。


由于Date被标记为不推荐使用,我认为应该有另一种方法来解决这个问题,所以我研究了一些方法,发现了这种方法

你也可以使用long.min_值,在我写这个的时候,我没有搜索它,甚至/所以我不记得它。enter image description here