.NET DateTime.MinValue,DateTime.Today的Java等价物

Java Date类中有DateTime.MinValue和DateTime.Today的Java等价物吗? 或者实现类似的方式?

我已经意识到如何使用.NET datetime类,我也需要相当于AddDays(),AddMonths()。


事实上的Java日期时间API是joda时间。

有了它,只需构建new DateTime()即可获取当前的日期/时间。

同样,如果没有它,您可以使用Calendar.getInstance()new Date()来获取当前日期/时间。

MinValue可以是Calendar.getInstance(0) / new Date(0) 。 这将使用默认的年表 - 即自1970年1月1日起。由于MinValue返回Januar 1st,year 1,您可以使用DateTime的相应构造函数简单地指定此日期。


.NET和Java中Date / Time特性的比较

+--------------------+----------------------------------------+----------------------------+
| .NET DateTime (C#) | Joda  DateTime (Java) [See Note #2]    | Java Date                  |
+--------------------+----------------------------------------+----------------------------+
|                    |                                        |                            |
| DateTime.MinValue  | new DateTime(Long.MIN_VALUE)           | new Date(Long.MIN_VALUE)   |
|                    |                                        |    [See Note #3]           |
|                    |                                        |                            |
| DateTime.Today     | new DateTime().withTimeAtStartOfDay()  | Messy [See Note #4]        |
|                    |                                        |                            |
| DateTime.Now       | new DateTime()                         | new Date()                 |
|                    |                                        |                            |
| DateTime.MaxValue  | new DateTime(Long.MAX_VALUE)           | new Date(Long.MAX_VALUE)   |
|                    |                                        |                            |
+--------------------+----------------------------------------+----------------------------+

补充笔记:

  • 处理日期和时间是凌乱的。 此表旨在成为代码迁移的起点。 比较比较概念,而不是确切的值(例如.NET的最小日期/时间与Java的不同)
  • Joda DateTime是Java的首选日期/时间库。
  • 请参阅Java中new Date(Long.MIN_VALUE)其他说明
  • 用Java的日期开始一天的开始有点多 - 参见这里。
  • .NET DateTimes默认为本地日期/时间,而在Java中它们默认为UTC。 确保在处理日期和时间时考虑时区的任何影响。

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

    java.time

    旧的日期 - 时间类(java.util.Date/.Calendar等)被Joda-Time取代,后者又被Java 8及更高版本中构建的java.time框架所取代。 java.time类的灵感来自Joda-Time,由JSR 310定义,由ThreeTen-Extra项目扩展,由ThreeTen-Backport项目移植到Java 6和7,并在ThreeTenABP项目中适用于Android。 参见教程。

    要获取UTC时间轴上的当前时间,并使用“ Instant分辨率,请使用“ Instant

    Instant now = Instant.now();
    

    Instant有三个常量:

  • EPOCH - 1970-01-01T00:00:00Z
  • MIN - -1000000000-01-01T00:00Z
  • MAX - 1000000000-12-31T23:59:59.999999999Z
  • 要获取UTC的偏移量的当前时刻,请应用ZoneOffset以获取OffsetDateTime

    OffsetDateTime now = OffsetDateTime.now( ZoneOffset.of( "-04:00" ) );
    

    如果已知,则更好地应用全时区(偏移加上夏令时等异常规则)。 应用ZoneId以获取ZonedDateTime

    ZonedDateTime now = ZonedDateTime.now( ZoneId.of( "America/Montreal" ) );
    

    你可以执行算术。

    ZonedDateTime dayLater = now.plusDays( 1 );
    ZonedDateTime monthLater = now.plusMonths( 1 );
    

    你可以得到一天的第一时刻。

    ZoneId zoneId = ZoneId.of( "America/Montreal" );
    ZonedDateTime tomorrowStart = now.toLocalDate().atStartOfDay( zoneId );  // Usually time-of-day of `00:00:00.0` but not always.
    

    如果您只需要没有时间和时区的日期,请使用LocalDate 。 同样, LocalTime仅用于无日期和无时区的时间。 通常最好坚持使用InstantOffsetDateTime / ZonedDateTime因为Local…类型不代表时间轴上的实际时刻(无偏移或时区意味着它们未定义)。

    LocalDate localDate = LocalDate.now( zoneId );
    LocalTime localTime = LocalTime.now( zoneId );
    
    链接地址: http://www.djcxy.com/p/3051.html

    上一篇: Java equivalent of .NET DateTime.MinValue, DateTime.Today

    下一篇: Format A TimeSpan With Years