我正在尝试实施此方法:
/**
* Adds the given span to the given date and returns a new date.
*/
public java.util.Date add(java.util.Date d, long span, java.util.concurrent.TimeUnit unit) {
// ...
}
我可以在设备上进行切换。有没有这样做的图书馆?阿帕奇公地?乔达?
答案 0 :(得分:8)
答案 1 :(得分:2)
有没有这样做的图书馆?阿帕奇公地?约达
是的,如果TimeUnit
不是强制性的,Jodatime为此提供了方便(以及DST安全!)方法。
DateTime now = new DateTime();
DateTime tomorrow = now.plusDays(1);
DateTime lastYear = now.minusYears(1);
DateTime nextHour = now.plusHours(1);
// ...
了解更多方法,了解DateTime
API。
答案 2 :(得分:0)
正确的方法是非常重要的。你有两种情况(假设你不介意忽略闰秒)。
如果您想将TimeUnit.DAYS解释为24小时(相对于23到25小时之间的某些内容,具体取决于DST更改),那么您只需添加毫秒:
public static Date add(Date base, long span TimeUnit unit) {
return new Date(base.getTime() + unit.toMillis(span);
}
如果你想识别DST,那么你将需要特殊情况DAYS:
public static Date add(Date base, long span TimeUnit unit) {
if (TimeUnit.DAYS.equals(unit)) {
Calendar c = Calendar.getInstance();
c.setTime(base);
c.add(Calendar.DAY_OF_MONTH, (int) span);
return c.getTime();
}
return new Date(base.getTime() + unit.toMillis(span);
}