我们如何在java中添加或减去日期?例如java.sql.Date
,格式如下:yyyy-MM-dd,我如何从中添加 5 个月?我在一些他们正在使用的教程中看到过Calendar
,我们可以在上面设置日期吗?请帮忙。
示例:2012-01-01
添加 5 个月后将变为2012-06-01
.
PS:我是一名 .Net 程序员,正在慢慢学习 Java 环境。
首先,您必须将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
}
清除用于日期数学的内置 Date 类。看看 JodaTime,它对这类事情有更好的 API。
采用Calendar
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 5);
要将日期转换为日历,请使用:
Date date = your_date_here;
Calendar cal = Calendar.getInstance();
cal.setTime(date);
然后使用日历算术函数来加/减:
cal.add(Calendar.MONTH, 5);
或者,将日期转换为以英里为单位的时间。做数学,并将毫秒转换回日期。
CalenderUtils
从谷歌的包 GWT 中使用。
import com.google.gwt.user.datepicker.client.CalendarUtil;
...
//now
Date d = new Date();
// Now + 2 months
CalendarUtil.addMonthsToDate(d, 2);
另一种选择是来自第 3 方 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);