我有以下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
如何确保日期符合我期望的格式?
答案 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小时。