有人知道用Java日历从日期中减去X天的简单方法吗?
在Java中,我找不到任何可以直接从日期中减去X天的函数。谁能给我指个方向?
发布于 2008-10-17 14:22:03
您可以使用add
方法并向其传递一个负数。但是,您也可以编写一个不使用Calendar
类的更简单的方法,如下所示
public static void addDays(Date d, int days)
{
d.setTime( d.getTime() + (long)days*1000*60*60*24 );
}
这将获取日期的时间戳值(从纪元开始的毫秒数),并添加适当的毫秒数。您可以为days参数传递一个负整数来进行减法。这将比“适当的”日历解决方案更简单:
public static void addDays(Date d, int days)
{
Calendar c = Calendar.getInstance();
c.setTime(d);
c.add(Calendar.DATE, days);
d.setTime( c.getTime().getTime() );
}
请注意,这两种解决方案都会更改作为参数传递的Date
对象,而不是返回一个全新的Date
。如果需要,这两个函数都可以很容易地更改为另一种方式。
发布于 2008-10-17 14:24:34
对于简单的情况,Anson's answer可以很好地工作,但如果您要进行更复杂的日期计算,我建议您查看Joda Time。它会让你的生活变得更轻松。
仅供参考,在Joda时间你可以做
DateTime dt = new DateTime();
DateTime fiveDaysEarlier = dt.minusDays(5);
发布于 2008-10-17 14:17:49
int x = -1;
Calendar cal = ...;
cal.add(Calendar.DATE, x);
https://stackoverflow.com/questions/212321
复制相似问题