【发布时间】:2014-09-24 08:47:29
【问题描述】:
假设我有一个 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 可以在任何时间点
【问题讨论】:
标签: java datetime time jodatime