2017-03-26 1 views
1

사용자 지정 형식으로 변환 할 오프셋이있는 입력 날짜 문자열이 있습니다. 문제는 Joda DateTimeFormatter을 사용하여 변환을 수행하면 결과 문자열이 현지 시간대에있는 것입니다. 어떻게 문자열을 변환합니까? 그렇지만 시간대는 그대로 두십시오. 이것은 내가 지금 무엇을 가지고오프셋이있는 날짜 문자열을 오프셋을 무시하는 사용자 지정 형식으로 변환

: 그것은 자정이되면

input: 2017-03-20T00:00:00  | output: Mar 20, 2017 12:0 AM 
input: 2017-03-23T15:12:24-04:00 | output: Mar 23, 2017 12:12 PM 

, 나는 어떤 오프셋 (예 1)을 얻을 수 없음 음주 :

public String getFormattedDate(String dateTimestamp) { 
     DateTimeFormatter fmt = DateTimeFormat.forPattern("MMM d, yyyy h:m a"); 
     return fmt.print(new DateTime(dateTimestamp)); 
     //return new LocalDateTime(dateTimestamp).toString(); 
} 

이 내가 얻을 것입니다. 그래서 이것은 잘 작동합니다. 그러나 두 번째 예에서 오프셋 (표준 시간대는 EST 임)을 얻습니다. 그리고 내 코드는 그것을 현지 시간 (PST)으로 변환합니다. 어떻게 이것을 피할 수 있습니까?

감사합니다.

답변

0

당신은이 같은 시간대를 유지 날짜 구문 분석해야 트릭을 수행 withOffsetParsed()

return fmt.print(ISODateTimeFormat.dateTimeParser().withOffsetParsed().parseDateTime(dateTimestamp)); 

방법을. 이 코드로, 나는 다음있어 :

input: 2017-03-20T00:00:00  | output: Mar 20, 2017 12:0 AM 
input: 2017-03-23T15:12:24-04:00 | output: Mar 23, 2017 3:12 PM 
0

시간대에 관심이 없기 때문에 LocalDateTime을 사용하십시오.

+0

감사합니다,하지만 LocalDateTime는를 슬로우'''IllegalArgumentException''' 내가 오프셋 문자열을 통과 할 때. 나는 그것을 시도했지만 위의 코드에서 주석 처리했다. 다른 방법으로 사용할 수 없다면? – drunkenfist

+0

시간대를 신경 쓰지 않으면 입력 문자열을 부분 문자열로 바꿔서 LocalzateTime으로 구문 분석하기 전에 입력 문자열을 제거하십시오. – httPants

+0

감사합니다.하지만 두 번 나누어야하므로 입력 문자열을 분할하지 않았습니다. 한 번 "T"; 다른 하나는 "-"입니다. 이게 효과가 있긴하지만 휴고의 대답을 받아 들일거야. – drunkenfist

관련 문제