8 个答案:
答案 0 :(得分:13)
首先,您必须将String日期转换为java.util.Date,而不是必须使用java.util.Calendar来操纵日期。也可以用millis做数学,但我不推荐这个。
public static void main( final String[] args ) throws ParseException {
final String sdate = "2012-01-01";
final SimpleDateFormat df = new SimpleDateFormat( "yyyy-MM-dd" );
final Date date = df.parse( sdate ); // conversion from String
final java.util.Calendar cal = GregorianCalendar.getInstance();
cal.setTime( date );
cal.add( GregorianCalendar.MONTH, 5 ); // date manipulation
System.out.println( "result: " + df.format( cal.getTime() ) ); // conversion to String
}
答案 1 :(得分:4)
避开日期数学的内置Date类。看看JodaTime,它有更好的API用于此类事情。
答案 2 :(得分:2)
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 5);
答案 3 :(得分:1)
要将日期转换为日历,请使用:
Date date = your_date_here;
Calendar cal = Calendar.getInstance();
cal.setTime(date);
然后使用日历算术函数进行加/减:
cal.add(Calendar.MONTH, 5);
答案 4 :(得分:0)
使用谷歌的GWT包中的CalenderUtils。
import com.google.gwt.user.datepicker.client.CalendarUtil;
...
//now
Date d = new Date();
// Now + 2 months
CalendarUtil.addMonthsToDate(d, 2);
答案 5 :(得分:0)
另一个选项是来自第三方Apache Commons库集合的DateUtils类。例如:
Date d = DateUtils.parseDate("2012-01-01", "yyyy-MM-dd");
Date d2 = DateUtils.addMonths(d, 5);
System.out.println("Old date + 5 months = " + d2);
答案 6 :(得分:0)
或者,将日期转换为milis。算一算,然后将毫秒转换回日期。
答案 7 :(得分:-1)