Java中的最短日期

use*_*745 46 java date

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

Den*_*kiy 69

不要忘记Date构造函数很乐意接受负值.

Date date = new Date(Long.MIN_VALUE);
Run Code Online (Sandbox Code Playgroud)

回报

Sun Dec 02 22:47:04 BDT 292269055

我想那是关于大爆炸恐龙的时间:)

编辑

正如马丁克莱顿回答的那样,您可以使用日历类来检查时代.这将输出0代表BCE:

Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date(Long.MIN_VALUE));
System.out.println(calendar.get(Calendar.ERA));
Run Code Online (Sandbox Code Playgroud)

  • 日历,走了! (7认同)
  • 但这似乎是未来(292269055年)的日期,而不是过去.似乎该参数被解释为正值. (2认同)
  • @tulskiy,并不多.因此使用JODA. (2认同)
  • 这是公元前3亿左右,不是大爆炸;) (2认同)
  • @Adam:是的,这是关于恐龙的时间,我只是懒得编辑答案:) (2认同)
  • 哈哈哈,大爆炸和恐龙的时代让我很开心:D (2认同)

mik*_*kej 42

如果您正在谈论java.util.Date作为时间戳,您可以这样做

Date d = new Date(0L) 你会看到这代表通用汽车1970年1月1日01:00:00


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

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));
Run Code Online (Sandbox Code Playgroud)

显示:太阳,12月2日292269055 BC 16:47:04 +0000


Bas*_*que 14

其他答案可能是正确的,但使用过时的类.

java.time

旧的日期时间类(java.util.Date/.Calendar等)已被Java 8及更高版本中内置的java.time框架取代.

的java.time类由启发约达时间,由下式定义JSR 310,由ThreeTen-EXTRA项目扩展,由后移植到Java 6和7 ThreeTen-反向移植项目,并适合于在到Android ThreeTenABP项目.请参阅教程.

有关UTC时间轴上的分辨率为纳秒的情况,请使用Instant.给定与UTC偏移量,使用OffsetDateTime.对于时区(偏移+异常规则),请使用ZonedDateTime,但就其性质而言,没有明确的最小值,也没有ZoneId.对于没有时间且没有时区的仅限日期的值,请使用LocalDate.对于没有日期且没有时区的仅限时间的值,请使用LocalTime.对于没有时区的日期时间,请使用LocalDateTime.

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

对于一个标志或特殊意义,如非空"没有价值",我建议选择一个任意的时刻,但避免在时间上向后或向前进入这样的极端.也许是Unix纪元参考日期,1970年的第一个时刻,UTC,1970-01-01T00:00:00Z.在Java中定义为常量:Instant.EPOCH


mar*_*ton 5

它与Calendar类相同.

试试这个:

Date d = new Date( Long.MIN_VALUE );
System.out.println( d );
Run Code Online (Sandbox Code Playgroud)

你会看到的:

Sun Dec 02 16:47:04 GMT 292269055
Run Code Online (Sandbox Code Playgroud)

但默认日期格式不包括时代 - 这是该日期的BCE.