日付をある入力文字列形式から別の形式に変換する必要がある Java メソッドがあります。入力と出力の形式は、すべてのミリ秒単位の詳細を保持する必要があります。これは、タイムスタンプがミリ秒間隔であることが多いプロセス追跡ソリューション用であるためです。
SimpleDateFormat はすべてのミリ秒データを失い、秒とミリ秒の乱数を返すだけのようです。
入力日付文字列: "05/23/2013 12:32:13.45133" 入力日付形式: "MM/dd/yyyy HH:mm:ss.SSSSS" 出力日付形式: "yyyyMMddHHmmssSSS"
上記の入力日付と形式を考えると、結果の日付文字列は 20130523123258133 になります。これは明らかに、入力秒数から完全にずれています。
入力形式は異なる場合がありますが、出力形式は常に同じでなければなりません。
以下は現在の方法です。
private long dateSequencer(String inputDt, String inputFormat) {
long result = 0;
try {
// Convert input date into yyyyMMddHHmmssSSS format for sequencing
SimpleDateFormat dtFrmt = new SimpleDateFormat(inputFormat);
Date dt = new Date();
dt = dtFrmt.parse(inputDt);
// input String converted to Date, now reformat to Long
dtFrmt = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String reFrmt = dtFrmt.format(dt);
result = Long.parseLong(reFrmt);
} catch (Exception ex) {
System.out.println("++++ Exception converting dateSequencer: " + ex.toString());
}
System.out.print("+++ABM dateSeq: [inputDt=" + inputDt + "] [inputFormat=" + inputFormat + "] [result=" + result +"]");
return result;
}
ランタイムからのログ ファイル エントリ:
+++ABM dateSeq: [inputDt=05/23/2013 12:32:13.45133] [inputFormat=MM/dd/yyyy HH:mm:ss.SSSSS] [result=20130523123258133]
入力形式は変更される可能性があるため、入力文字列を手動で解析して特定のパターンに依存することはできません。これが、パターンを渡すことを許可し、SimpleDateFormat を使用して Date に変換してから String に戻す理由です。
どうすれば確実にこれを行うことができますか?指定された入力日付文字列を標準形式に変換するより効率的な方法はありますか?
ありがとう!