Sim*_*eke 2 java datetime android
我已经验证了从文件中正确读取日期,但是一旦我使用SimpleDateFormat.format该模式,"dd/MM/yy"它突然增加了一个月.这让我相信宽松模式正在计算错误的价值.但我不知道是什么会让它增加整整一个月.
我读到的一些例子日期:
16/09/2013
23/09/2013
30/09/2013
07/10/2013
14/10/2013
21/10/2013
Run Code Online (Sandbox Code Playgroud)
用于解析日期的代码(它是我制作的Calendar的包装器):
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);
}
Run Code Online (Sandbox Code Playgroud)
这里使用的构造函数:
public SimpleDateTime(int day, int month, int year)
{
date = Calendar.getInstance();
date.setLenient(true);
setDay(day);
setMonth(month);
setYear(year);
}
Run Code Online (Sandbox Code Playgroud)
日,月和年的制定者:
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);
}
Run Code Online (Sandbox Code Playgroud)
用于格式化日期的代码:
public String toString(String pattern)
{
String output = new SimpleDateFormat(pattern, Locale.getDefault()).format(date.getTime());
return output;
}
Run Code Online (Sandbox Code Playgroud)
传递模式的地方是:
"dd/MM/yy"
Run Code Online (Sandbox Code Playgroud)
打算将日期打印为:
16/09/13
23/09/13
Run Code Online (Sandbox Code Playgroud)
相反,我得到:
16/10/13
23/10/13
Run Code Online (Sandbox Code Playgroud)
1月份Java为0; 二月是1,依此类推.
见Calendar.JANUARY,Calendar.FEBRUARY.
因此,当你从文件中读取1时,
你认为你读过JAN,但你读的是FEB.
你应该这样做:date.set(Calendar.MONTH, month-1);解决这个问题.
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |