하나의 입력 문자열 형식에서 다른 형식으로 날짜를 변환해야하는 Java 메소드가 있습니다. 입력 및 출력 형식은 밀리 초 세부 사항을 모두 보유해야합니다. 이는 시간 소인이 수 밀리 초 정도 떨어져있는 프로세스 추적 솔루션을위한 것입니다.문자열 입력을 밀리 초 단위로 변환하는 방법
SimpleDateFormat은 모든 밀리 초 데이터를 잃어 버리고 있으며 초 및 밀리 초 동안 난수를 반환하는 것처럼 보입니다.
입력 날짜 문자열 "2013년 5월 23일 12 : 32 : 13.45133" 입력 데이터 형식 "MM/DD/YYYY HH : MM : ss.SSSSS" 출력 데이터 형식 "yyyyMMddhhmmssSSS가"
위의 입력 날짜 및 형식이 주어지면 결과 날짜 문자열은 20130523123258133입니다. 이것은 입력 초에서 완전히 벗어났습니다.
입력 형식은 다를 수 있지만 출력 형식은 항상 동일해야합니다.
입력 형식이 변경 될 수 있기 때문에+++ABM dateSeq: [inputDt=05/23/2013 12:32:13.45133] [inputFormat=MM/dd/yyyy HH:mm:ss.SSSSS] [result=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;
}
로그 파일 항목 : 아래
는 현재의 방법입니다 . 이 때문에 패턴을 전달할 수 있도록 허용하고 SimpleDateFormat을 사용하여 Date로 변환 한 다음 다시 String으로 변환합니다.안정적으로 어떻게해야합니까? 주어진 입력 날짜 문자열을 표준 형식으로 변환하는보다 효율적인 방법이 있습니까?
감사합니다.