我有一个日期String newDate = "31.05.2001"
我必须增加1天
我尝试了以下代码:
String dateToIncr = "31.12.2001";
String dt="";
SimpleDateFormat sdf = new SimpleDateFormat("dd.mm.yyyy");
Calendar c = Calendar.getInstance();
try {
c.setTime(sdf.parse(dateToIncr));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
c.add(Calendar.DAY_OF_MONTH, 1); // number of days to add
dt = sdf.format(c.getTime());
System.out.println("final date now : " + dt);
但是使用这段代码,它只设法添加了一天,即31.05.2001的输出将是1.05.2001,保持月份和年份不变!请帮我一下。
我也试过
c.roll(Calendar.DATE, 1); // number of days to add
您应该使用new SimpleDateFormat("dd.MM.yyyy");
"mm"代表分钟,"mm"代表月。
让它成为java Date
对象并使用Apache的DateUtils
对其进行各种操作会更简单。看看这个http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/time/DateUtils.html。它很方便,特别是当你必须在项目的多个地方使用它,并且不想每次都为此编写荒谬的行数时。
API说:
addDays(Date Date, int amount):在返回新对象的日期上增加天数。
注意,它返回一个新的Date
对象,并且不会对前一个对象本身进行更改。
你的错误在日期格式上。您应该使用MM(月)而不是MM(分钟)。
将SimpleDateFormat sdf = new SimpleDateFormat("dd.mm.yyyy");
更改为SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
和享受。
试试!!!!
String DATE_FORMAT = "dd-MM-yyyy";
String date_string = "20-12-2001";
java.text.SimpleDateFormat sdf =
new java.text.SimpleDateFormat(DATE_FORMAT);
Date date = (Date)sdf.parse(date_string);
Calendar c1 = Calendar.getInstance();
c1.setTime(date);
System.out.println("Date is : " + sdf.format(c1.getTime()));
c1.add(Calendar.MONTH,1);
System.out.println("Date + 1 month is : " + sdf.format(c1.getTime()));