为什么在我添加 10 分钟后,月份更改为 50?

我有这个日期对象:

SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd HH:mm");
Date d1 = df.parse(interviewList.get(37).getTime());

d1 的值为Fri Jan 07 17:40:00 PKT 2011

现在我试图在上面的日期中添加10分钟。

Calendar cal = Calendar.getInstance();
cal.setTime(d1);
cal.add(Calendar.MINUTE, 10);
String newTime = df.format(cal.getTime());

值更改为,但它应该是 。newTime2011-50-07 17:5007-01-2011 17:50

它正确地增加了分钟,但它也改变了月份,不知道为什么!


答案 1

您的问题是您正在使用 .您应该使用 . 表示月,表示分钟。尝试mmMMMMmmyyyy-MM-dd HH:mm

其他方法:

它可以像这样简单(另一种选择是使用joda-time)

static final long ONE_MINUTE_IN_MILLIS=60000;//millisecs

Calendar date = Calendar.getInstance();
long t= date.getTimeInMillis();
Date afterAddingTenMins=new Date(t + (10 * ONE_MINUTE_IN_MILLIS));

答案 2

你可以在 org.apache.commons.lang3.time package 中使用 DateUtils 类

int addMinuteTime = 5;
Date targetTime = new Date(); //now
targetTime = DateUtils.addMinutes(targetTime, addMinuteTime); //add minute