Java中的最小日期

hzbexzde  于 2023-01-01  发布在  Java
关注(0)|答案(6)|浏览(375)

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

vbkedwbf

vbkedwbf1#

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

Date date = new Date(Long.MIN_VALUE);

退货
12月2日星期日22:47:04英国夏令时292269055
我猜那大概是大爆炸恐龙的时代:)

    • 编辑**

正如 * martin clayton * 所回答的,你可以使用Calendar类来检查年代,这将输出0,代表BCE:

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

nkcskrwz2#

如果您将java.util.Date作为时间戳,则可以执行此操作
Date d = new Date(0L),您将看到它表示1970年1月1日星期四01:00:00 GMT
正如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));

显示时间:公元前292269055年12月2日星期日16:47:04 +0000

1cosmwyk

1cosmwyk3#

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

java.时间

旧的日期-时间类(java.util.Date/. Calendar等)已经被内置到Java8和更高版本中的java.time框架所取代。
java. time类的灵感来自Joda-Time,定义于JSR 310,扩展于ThreeTen-Extra项目,后移植于Java 6和7,并在ThreeTenABP项目中适应Android。
对于分辨率为nanosecondsUTC中的时间线,使用Instant。给定offset-from-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
  • x1米13纳米1x = x1米14纳米1x
  • LocalDateTime.MIN = -999999999-01-01T00:00:00
  • Year.MIN_VALUE = -999,999,999
  • ZoneOffset.MIN = -18:00(但实际上是-12:00
    • 警告:**请小心使用这些值作为某种标志或特殊含义。许多其他软件库和数据库可能不支持这些极值。

对于一个标志或特殊含义,如非空的"no value available",我建议选择一个任意的时刻,但要避免走极端,在时间上向前或向后到达。例如Unix epoch reference date,UTC中1970年的第一个时刻,1970 - 01 - 01T00:00:00Z。在Java中定义为常量:Instant.EPOCH

6gpjuf90

6gpjuf904#

这与Calendar类相同。
试试这个:

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

您将看到:

Sun Dec 02 16:47:04 GMT 292269055

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

ktca8awb

ktca8awb5#

LocalDateTime MIN定义支持的最小LocalDateTime“-99999999 -01- 01 T00:00:00”。这是最小日期开始时的午夜本地日期时间。
公共静态最终LocalDateTime MIN;这是MIN语法;

import java.time.LocalDateTime;
public class Main {
  public static void main(String[] args) {
    LocalDateTime a = LocalDateTime.MIN;

    System.out.println(a);
  }
}
4xrmg8kj

4xrmg8kj6#

由于Date被标记为Deprecated,我认为应该有另一种方法来解决这个问题,因此我查看了一些方法,并找到了这种方法

你也可以使用Long.MIN_VALUE,在我写这篇文章的时候,我还没有搜索过它,甚至/所以我不记得它。x1c 0d1x

编辑

在评论中提到,不是整个类都被弃用了,而且仍然可用,但是它的一些功能被弃用了,所以你可以重新考虑其中的一些...

  • 注 *:在我写这篇文章的时候,我使用的是Java 8,现在我们有很多Java版本,从那时起,他们甚至可能重新考虑方法,或改变行为等,我不知道,因为现在我用另一种语言编程。

相关问题