2014-06-23 2 views
5

나는 DateTime 개체에 문자열을 구문 분석 할 :org.joda.time을 사용하여 시간대를 설정하는 방법은 무엇입니까?

DateTimeFormatter fmt = DateTimeFormat.forPattern("M/d/yyyy HH:mm"); 
DateTime dt = fmt.parseDateTime(stringDate + " " +  stringTime).withZone(DateTimeZone.forID("Europe/Dublin")); 

나는 시간 2014년 6월 22일 10:43 소개하면 내가 2014년 6월 22일 8시 43분 0100

를 얻을,

는하지만

2014년 6월 22일 10시 43분 0100

01 싶어

어떻게하면됩니까?

+0

죄송합니다, 일부 소요되는 시간 후 내가 답을 발견 http://stackoverflow.com/questions/19002978/in-joda-time- 변환 할 시간대가없는 변환 방법 감사합니다. @jgm – Filosssof

답변

8

DateTime이 아니라 표준 시간대를 포맷터에 적용해야합니다. 그렇지 않으면, 날짜가 현지 시간대에 이미 파싱되어 있고, 원하는 시간대로 바꾸기 만하면됩니다. 이 확장 된 코드에서

DateTimeFormatter fmt = DateTimeFormat.forPattern("M/d/yyyy HH:mm") 
         .withZone(DateTimeZone.forID("Europe/Dublin")); 
DateTime dt = fmt.parseDateTime("06/22/2014 10:43"); 
1

찾는 위치 :

String s = "06/22/2014 10:43"; 
DateTimeFormatter fmt = DateTimeFormat.forPattern("M/d/yyyy HH:mm"); // uses local zone 
DateTime dt1 = fmt.parseDateTime(s).withZone(DateTimeZone.forID("Europe/Dublin")); 
DateTime dt2 = fmt.withZone(DateTimeZone.forID("Europe/Dublin")).parseDateTime(s); 
DateTime dt3 = 
    fmt.parseDateTime(s).withZoneRetainFields(DateTimeZone.forID("Europe/Dublin")); 
System.out.println(dt1); // 2014-06-22T09:43:00.000+01:00 (from my zone Berlin to Dublin) 
System.out.println(dt2); // 2014-06-22T10:43:00.000+01:00 
System.out.println(dt3); // 2014-06-22T10:43:00.000+01:00 
관련 문제