서버에서 생성 된 특정 로그 파일에 밀리 초가 있으며 로그 파일이 생성 된 로케일을 알고 있습니다. 제 문제는 밀리 초를 지정된 형식의 날짜로 변환하는 것입니다. 해당 로그 처리는 다른 시간대에있는 서버에서 발생합니다. "SimpleDateFormat"으로 변환하는 동안 포맷 날짜가 서버의 정확한 시간을 나타내지 않기 때문에 프로그램이 기계의 날짜를 가져옵니다. 이것을 우아하게 처리 할 수있는 방법이 있습니까?
long yourmilliseconds = 1322018752992l;
//1322018752992-Nov 22, 2011 9:25:52 PM
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS",Locale.US);
GregorianCalendar calendar = new GregorianCalendar(TimeZone.getTimeZone("US/Central"));
calendar.setTimeInMillis(yourmilliseconds);
System.out.println("GregorianCalendar -"+sdf.format(calendar.getTime()));
DateTime jodaTime = new DateTime(yourmilliseconds,
DateTimeZone.forTimeZone(TimeZone.getTimeZone("US/Central")));
DateTimeFormatter parser1 = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss,SSS");
System.out.println("jodaTime "+parser1.print(jodaTime));
산출:
Gregorian Calendar -2011-11-23 08:55:52,992
jodaTime 2011-11-22 21:25:52,992
GregorianCalendar
, SimpleDateFormat
등)와 우수한 Joda-Time 라이브러리는 현대 java.time 클래스로 대체되었습니다 .