将毫秒添加到日期时获得 24 小时时间?

Getting 24hr time when adding miliseconds to a Date?

我有以下 Java 代码,它需要一个日期并且应该在日期上加上一整天:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
String dateString = "2017-01-30T19:00:00+0000"
Date date = formatter.parse(dateString);

long timeBetweenStartDates = 24 * 60 * 1000;
Long DateWithOneDayAddedInMilis = date.getTime()+timeBetweenStartDates;
Date dateWithOneDayAdded = new Date((DateWithOneDayAddedInMilis));

我为 dateWithOneDayAdded 获得的价值是:

Mon Jan 30 13:24:00 GMT 2017

我在这里寻找的是:

 Tue Jan 31 13:24:00 GMT 2017

如何确保日期格式符合我的预期?

哦,这是一个很好的例子,说明更新的日期和时间 类 对程序员更友好。有了这些,几乎不可能犯像你犯的错误(用旧的 类 很容易犯,特别是一旦你写完代码就很难发现)。

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ");
    String dateString = "2017-01-30T19:00:00+0000";
    OffsetDateTime dateTime = OffsetDateTime.parse(dateString, formatter);
    OffsetDateTime dateWithOneDayAdded = dateTime.plusDays(1);
    System.out.println(dateWithOneDayAdded);

这会打印

2017-01-31T19:00Z

您当然可以按照您或您的用户喜欢的方式格式化计算的日期时间。

一个额外的好处是 plusDays() 可以很好地处理夏令时 (DST) 的转换,并在第二天(如果可能的话)到达同一时间,而不是盲目地增加 24 小时。