我根据日历找到了一些答案,以获取当月的最后日期。
我需要一个函数,它将一个字符串作为日期2014-04-01 (yyyy-MM-dd)
格式,并以相同的格式返回最后一个日期。
如果用户输入2014-04-05
我需要返回2014-04-30
的函数。
我正在尝试的代码是当前的日期时间,但我仍然坚持使用getactualmaxium
点以及如何使用它。
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH,0);
cal.set(Calendar.DATE, 0);
Date firstDateOfPreviousMonth = cal.getTime();
System.out.println(firstDateOfPreviousMonth );
cal.set(Calendar.DATE, cal.getActualMaximum(Calendar.DATE));
Date lastDateOfPreviousMonth = cal.getTime();
System.out.println(lastDateOfPreviousMonth );
答案 0 :(得分:2)
检查以下代码是否有帮助
public static void main(String[] args) throws ParseException {
String dateStr="2014-04-05";
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
cal.setTime(sdf.parse(dateStr));
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
System.out.println(sdf.format(cal.getTime()));
}
答案 1 :(得分:1)
如果你可以在Java 8中使用JodaTime或新的JSR-310 DateTime,我就不会使用Calendar。
String dateStr = "2014-04-05";
LocalDate endOfMonth = LocalDate.parse(dateStr)
.withDayOfMonth(1).plusMonths(1).minusDays(1);
System.out.println(endOfMonth);
你可以做什么,是在月初,增加一个月并减去一天。
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
cal.set(Calendar.DATE, 1);
cal.add(Calendar.MONTH, 1);
cal.add(Calendar.DATE, -1);
System.out.println(cal.getTime());