ファイルから日付が正しく読み取られていることを確認しましたSimpleDateFormat.format
が、パターンを使用すると、"dd/MM/yy"
突然1か月が追加されます。これは、寛大なモードが間違った値を計算していると私に信じさせます。しかし、何がそれを丸1か月追加するのか私にはわかりません。
私が読んだいくつかの日付の例:
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
Javaでは1月は0です。2月は1などです。
参照してくださいCalendar.JANUARY
、Calendar.FEBRUARY
。
したがって、ファイルから1を読んでいるときは、
JANを読んでいると思いますが、FEBを読んでいます。
date.set(Calendar.MONTH, month-1);
これを修正するには、次のことを行う必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加