代码之家  ›  专栏  ›  技术社区  ›  Chris S

Java等价于.NET DateTime.MinValue,DateTime.Today

  •  16
  • Chris S  · 技术社区  · 14 年前

    我已经意识到.NET datetime类对您的影响,我还需要相当于AddDays()、AddMonths()的类。

    6 回复  |  直到 9 年前
        1
  •  23
  •   Bozho    14 年前

    事实上,Java datetime API是 joda-time .

    new DateTime() .

    Calendar.getInstance() new Date() 获取当前日期/时间。

    MinValue Calendar.getInstance(0) / new Date(0) 最小值 DateTime .

        2
  •  3
  •   Community CDub    8 年前

    NET与Java中日期/时间特性的比较

    +--------------------+----------------------------------------+----------------------------+
    | .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)   |
    |                    |                                        |                            |
    +--------------------+----------------------------------------+----------------------------+
    

    1. 处理日期和时间很麻烦。此表旨在作为代码迁移的起点。比较比较概念,而不是精确的值(例如NET的最小日期/时间与Java的值不同)
    2. Joda DateTime 是Java的首选日期/时间库。
    3. additional notes new Date(Long.MIN_VALUE) 在Java中
    4. 从Java的日期开始一天要复杂一些- see here .
    5. impact of timezones 在处理日期和时间时。
        3
  •  3
  •   Basil Bourque    9 年前

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

    旧的日期时间类(java.util.date/.Calendar等)被替换为 Joda-Time ,而这又被 java.time Java 8及更高版本中内置的框架。java.time类的灵感来自 ,由定义 JSR 310 ThreeTen-Backport 项目,并在 ThreeTenABP 项目。见 Tutorial .

    UTC 决心 nanoseconds ,使用 Instant .

    Instant now = Instant.now();
    

    有三个常数:

    • EPOCH 1970-01-01T00:00:00Z
    • MIN -1000000000-01-01T00:00Z
    • MAX 1000000000-12-31T23:59:59.999999999Z

    得到当前时刻 offset-from-UTC ZoneOffset 得到一个 OffsetDateTime .

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

    最好申请 full time zone 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 只为没有日期和时区的时间。通常最好坚持 偏移日期时间 / 作为 Local… 类型不表示时间线上的实际时刻(没有偏移或时区表示它们未定义)。

    LocalDate localDate = LocalDate.now( zoneId );
    LocalTime localTime = LocalTime.now( zoneId );
    
        4
  •  -2
  •   Kevin D    14 年前

    现在应该使用Calendar对象来完成大多数日期操作。

    http://download.oracle.com/javase/6/docs/api/java/util/Calendar.html

        5
  •  -2
  •   zerodin    14 年前

    SimpleDateFormat=新SimpleDateFormat(“dd/MM/yyyy”);

        try {
    
            System.out.println("Today: " + dateFormat.format(calendar.getTime()));
    
        } catch (Exception e) {
            e.printStackTrace();
        }