在日期添加毫秒时获得24小时的时间?

时间:2017-05-19 10:17:18

标签: java string datetime simpledateformat

我有以下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

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

1 个答案:

答案 0 :(得分:1)

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

    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小时。