假设我有一个DateTime参考,我想在15:00获取前一天的时间。
如果我说
DateTime someTime = ....;
DateTime yesterday1500 = someTime.toDateMidnight().toDateTime().minusDays(1).plusHours(15);
然后,这将在所有日子都有效,除非有夏令时更改。
如果someTime ='1.4.2014',我会得到'31 .3.2014 15:00'。
如果someTime = '31 .3.2014',我会得到'30 .3.2014 16:00'。
我能想到的最好的是
yesterday1500 = new DateTime(someTime.getYear(), someTime.getMonthOfYear(), someTime.getDayOfMonth(), 15, 0, 0, 0);
它工作正常,但似乎笨拙。
有没有更好的办法?
编辑:
我在克罗地亚(CEST(UTC + 01:00)时区)。
编辑2:
在示例代码中添加了... toDateMidnight()。toDateTime()...以指示someTime可以在任何时间点
最佳答案
这很整洁:
DateTime dt = someTime.minusDays(1).withTime(15, 0, 0, 0);