9

我们如何在java中添加或减去日期?例如java.sql.Date,格式如下:yyyy-MM-dd,我如何从中添加 5 个月?我在一些他们正在使用的教程中看到过Calendar,我们可以在上面设置日期吗?请帮忙。

示例:2012-01-01添加 5 个月后将变为2012-06-01.

PS:我是一名 .Net 程序员,正在慢慢学习 Java 环境。

4

8 回答 8

14

首先,您必须将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
}
于 2012-04-12T06:19:19.923 回答
4

清除用于日期数学的内置 Date 类。看看 JodaTime,它对这类事情有更好的 API。

于 2012-04-12T06:21:25.900 回答
2

采用Calendar

Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 5);
于 2012-04-12T06:18:14.183 回答
1

要将日期转换为日历,请使用:

Date date = your_date_here;

Calendar cal = Calendar.getInstance();
cal.setTime(date);

然后使用日历算术函数来加/减:

cal.add(Calendar.MONTH, 5);
于 2012-04-12T06:23:51.843 回答
0

或者,将日期转换为以英里为单位的时间。做数学,并将毫秒转换回日期。

于 2012-04-12T06:21:40.610 回答
0

CalenderUtils从谷歌的包 GWT 中使用。

import com.google.gwt.user.datepicker.client.CalendarUtil;

...

//now
Date d = new Date();
// Now + 2 months
CalendarUtil.addMonthsToDate(d, 2);
于 2012-04-12T06:24:47.223 回答
0

另一种选择是来自第 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);
于 2014-03-05T13:57:35.357 回答
-1

进行日期添加的完整程序位于http://dwbitechguru.blogspot.ca/2014/09/jave-program-to-add-or-substract-dates.html

于 2014-09-24T19:05:09.827 回答