「JAVA」SimpleDateFormatの処理時間がかかる対策
SimpleDateFormatを使う時、注意すべきところは処理時間です。
大量のデータの処理にこの関数を使う時、下記のように変えたほうがずいぶんはやくなれる。
/**
* Date型を「yyyyMMddHHmmssSSS」フォーマットの文字列に変換する
* @param Date Data型の日時
* @return String 変換後の文字列
*/
public static String DateFormatToMsNoBreak(Date d) {
StringBuilder s = new StringBuilder();
Calendar c = Calendar.getInstance();
c.setTime(d);
s.append(c.get(Calendar.YEAR))
.append(lpad(String.valueOf(c.get(Calendar.MONTH) + 1),2,"0"))
.append(lpad(String.valueOf(c.get(Calendar.DAY_OF_MONTH)),2,"0"))
.append(lpad(String.valueOf(c.get(Calendar.HOUR_OF_DAY)),2,"0"))
.append(lpad(String.valueOf(c.get(Calendar.MINUTE)),2,"0"))
.append(lpad(String.valueOf(c.get(Calendar.SECOND)),2,"0"))
.append(lpad(String.valueOf(c.get(Calendar.MILLISECOND)),3,"0"));
return s.toString();
}
大量のデータの処理にこの関数を使う時、下記のように変えたほうがずいぶんはやくなれる。
/**
* Date型を「yyyyMMddHHmmssSSS」フォーマットの文字列に変換する
* @param Date Data型の日時
* @return String 変換後の文字列
*/
public static String DateFormatToMsNoBreak(Date d) {
StringBuilder s = new StringBuilder();
Calendar c = Calendar.getInstance();
c.setTime(d);
s.append(c.get(Calendar.YEAR))
.append(lpad(String.valueOf(c.get(Calendar.MONTH) + 1),2,"0"))
.append(lpad(String.valueOf(c.get(Calendar.DAY_OF_MONTH)),2,"0"))
.append(lpad(String.valueOf(c.get(Calendar.HOUR_OF_DAY)),2,"0"))
.append(lpad(String.valueOf(c.get(Calendar.MINUTE)),2,"0"))
.append(lpad(String.valueOf(c.get(Calendar.SECOND)),2,"0"))
.append(lpad(String.valueOf(c.get(Calendar.MILLISECOND)),3,"0"));
return s.toString();
}