Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java-上个月的开始日期_Java_Date_Calendar - Fatal编程技术网

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)