各反復で yyyymmddhhmmss.mmm の形式で任意の日付のミリ秒を増やしたいと思います。ここで mmm はミリ秒を表します。そして、この操作を Java 1.5 で実行したいと考えています。
例: 20120823151034.567 は 20120823151034.568 にインクリメントする必要があります。
long
増分を簡単にするミリ秒を使用できます。
final String input = "20120823151034.567";
final DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss.SSS");
Date d = df.parse(input);
d.setTime(d.getTime()+1);
System.out.println(df.format(d));
Calendar は非常に遅いため、使用しません。
この操作に使用する最適なクラスはCalendar
. 希望の日付に設定してから使用します
myCalendar.add(Calendar.MILLISECOND, 1);
1ミリ秒進めます。DateFormat
文字列表現を生成するために使用します。
オブジェクトに解析String
し、使用して日付を変更できます。その後、オブジェクトを に戻すことができます。オブジェクトを解析して変換するには、クラスを使用できます。Date
getTime()
setTime(long l)
Date
String
String
Date
String
SimpleDateFormat
これにより、必要なものが得られます。日/月/年の境界を越えて機能し、夏時間の開始と終了を処理します。
final String input = "20120823151034.567";
final DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss.SSS");
final Calendar c = Calendar.getInstance();
c.setTime(df.parse(input));
c.add(Calendar.MILLISECOND, 1);
System.out.println(df.format(c.getTime()));
これには、カレンダークラスと日付クラスを使用できます....
日付クラス:
final String dateStr = "20120823151034.567";
final DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss.SSS");
Date date = format.parse(input);
date.setTime(date.getTime()+1);
System.out.println(format.format(date));
カレンダー クラス:
final String dateStr = "20120823151034.567";
final DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss.SSS");
Calendar c = Calendar.getInstance();
c.setTime(format.parse(dateStr ));
c.add(Calendar.MILLISECOND,1);
System.out.println(format.format(c.getTime()));
どちらの場合も、format.parse() は ParseException をスローする可能性があるため、これをキャッチして処理する必要があります。
Calendar を使用しない代替手段 (ただし、Calendar は問題ありません)
final String input = "20120814120000.111";
final DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss.SSS");
Date date = new format.parse(input);
long time = date.getTime();
Date incrementedDate = new Date(time + 1);
System.out.println(format.format(date));