【发布时间】:2014-02-21 05:49:54
【问题描述】:
我已经验证从文件中正确读取了日期,但是一旦我将SimpleDateFormat.format 与"dd/MM/yy" 模式一起使用,它突然增加了一个月。这使我相信宽松模式正在计算错误的值。但我不知道是什么让它增加了整整一个月。
我读到的一些示例日期:
16/09/2013
23/09/2013
30/09/2013
07/10/2013
14/10/2013
21/10/2013
用于解析日期的代码(它是我制作的日历的包装器):
public static SimpleDateTime parseDate(String date)
{
String[] dateParts = date.split("[-\\.:/]");
int day = Integer.parseInt(dateParts[0]);
int month = Integer.parseInt(dateParts[1]);
int year = Integer.parseInt(dateParts[2]);
return new SimpleDateTime(dag, maand, jaar);
}
这里使用的构造函数:
public SimpleDateTime(int day, int month, int year)
{
date = Calendar.getInstance();
date.setLenient(true);
setDay(day);
setMonth(month);
setYear(year);
}
日、月、年的设置器:
public void setYear(int year)
{
date.set(Calendar.YEAR, year);
}
public void setMonth(int month)
{
date.set(Calendar.MONTH, month);
}
public void setDay(int day)
{
date.set(Calendar.DAY_OF_MONTH, day);
}
以及用于格式化日期的代码:
public String toString(String pattern)
{
String output = new SimpleDateFormat(pattern, Locale.getDefault()).format(date.getTime());
return output;
}
传递的模式在哪里:
"dd/MM/yy"
打算将日期打印为:
16/09/13
23/09/13
相反,我得到:
16/10/13
23/10/13
【问题讨论】: