java-上个月的开始日期
我想计算上个月的开始日期。我已经提到并编写了以下代码片段:java-上个月的开始日期,java,date,calendar,Java,Date,Calendar,我想计算上个月的开始日期。我已经提到并编写了以下代码片段: Calendar calendar = getCalendar(new Date()); calendar.set(Calendar.DAY_OF_MONTH-1, calendar.getActualMinimum(DAY_OF_MONTH)); calendar = getTimeToBeginningOfDay(calendar); return calendar.getTime(); 有了这个我可以在上个月底
Calendar calendar = getCalendar(new Date());
calendar.set(Calendar.DAY_OF_MONTH-1,
calendar.getActualMinimum(DAY_OF_MONTH));
calendar = getTimeToBeginningOfDay(calendar);
return calendar.getTime();
有了这个我可以在上个月底之前得到日期。请帮助我获取任何帮助的开始日期,我们将不胜感激。您可以通过以下方式获得所需的帮助:
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));
您不应该对字段常量进行数学运算,例如
Calendar.DAY\u OF\u MONTH
。您要做的是:
Calendar calendar = getCalendar(new Date());
calendar.add(Calendar.MONTH, -1);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar = getTimeToBeginningOfDay(calendar);
return calendar.getTime();
如果你只想要上个月的第一天,那么这个就可以了
Calendar instance = Calendar.getInstance();
instance.add(Calendar.MONTH, -1);
instance.set(Calendar.DAY_OF_MONTH, 1);
System.out.println(instance.getTime());
如果需要清除时间成分,请使用本文中提到的
getTimeToBeginingOfDay()
来实现这一点。从常量int字段DAY\u OF\u MONTH中减去1?那么,设置日历的哪个字段呢?另外,如果我错了,请纠正我,但是每个月的开始日期不是一个月的第一天吗?只需将日历对象的DAY\u OF\u MONTH字段设置为1<代码>日历.set(calendar.DAY\u OF_MONTH,1)代码>当然你想把它回滚一个月<代码>日历.add(calendar.MONTH,-1)代码>