2012-09-13 33 views
1

我想计算上个月的开始日期。我刚才提到this post和我写的代码片段如下:java - 上个月的开始日期

Calendar calendar = getCalendar(new Date()); 
calendar.set(Calendar.DAY_OF_MONTH-1, 
     calendar.getActualMinimum(DAY_OF_MONTH)); 
calendar = getTimeToBeginningOfDay(calendar); 

return calendar.getTime(); 

有了这个我能够最后一个月月底之前得到的日期。帮助我得到任何帮助的开始日期将不胜感激。

+0

从常量int域DAY_OF_MONTH中减1?那么日历的哪个领域正在设置?另外,如果我错了,请纠正我,但不是每月第一天的开始日期?只需将日历对象的DAY_OF_MONTH字段设置为1.'calendar.set(Calendar.DAY_OF_MONTH,1);'当然,您希望将其回滚一个月。 'calendar.add(Calendar.MONTH,-1);' – km1

回答

1

你不应该做数学领域上的常量如Calendar.DAY_OF_MONTH。你想要做的是:

Calendar calendar = getCalendar(new Date()); 
calendar.add(Calendar.MONTH, -1); 
calendar.set(Calendar.DAY_OF_MONTH, 1); 
calendar = getTimeToBeginningOfDay(calendar); 

return calendar.getTime(); 
1

你可以得到你所期待什么:

Calendar c = Calendar.getInstance(); 

// substract one month 
c.add(Calendar.MONTH, -1); 

// get to the lowest day of that month 
c.set(Calendar.DAY_OF_MONTH, c.getActualMinimum(Calendar.DAY_OF_MONTH)); 

// lowest possible time in that day 
c.set(Calendar.HOUR_OF_DAY, c.getActualMinimum(Calendar.HOUR_OF_DAY)); 
c.set(Calendar.MINUTE, c.getActualMinimum(Calendar.MINUTE)); 
c.set(Calendar.SECOND, c.getActualMinimum(Calendar.SECOND)); 
1

如果你只是想在上个月的第一天,那么这应该做到这一点。

Calendar instance = Calendar.getInstance(); 
    instance.add(Calendar.MONTH, -1); 
    instance.set(Calendar.DAY_OF_MONTH, 1); 

    System.out.println(instance.getTime()); 

如果需要清除出时间部分,然后用在帖子中提到getTimeToBeginningOfDay()实现这一目标。

相关问题