.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) |
| | | |
+--------------------+----------------------------------------+----------------------------+
补充笔记:
new Date(Long.MIN_VALUE)
其他说明 其他答案可能是正确的,但使用过时的类。
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
仅用于无日期和无时区的时间。 通常最好坚持使用Instant
和OffsetDateTime
/ 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