2014-09-29 2 views
8

다른 시스템에서 문자열 날짜를 수신하고 해당 날짜의 로캘을 알고 있습니다 (다른 시스템에서도 사용 가능). 대상 패턴을 명시 적으로 지정하지 않고이 문자열을 Joda-TimeDateTime 개체로 변환하려고합니다.로캘을 기반으로하는 Joda-Time DateTime 형식

예를 들어이 문자열을 "09/29/2014"로 변환하려면 날짜 형식을 "mm/dd/yyyy"로 하드 코딩하지 말고 로캘을 사용하는 날짜 개체로 변환하고 싶습니다. 이 형식은 내가받는 날짜의 지역에 따라 달라 지므로 하드 코드 형식을 사용할 수 없습니다. 당신이 볼 수 있듯이

답변

9
String localizedCalendarDate = DateTimeFormat.shortDate().print(new LocalDate(2014, 9, 29)); 
// uses in Germany: dd.MM.yyyy 
// but uses in US: MM/dd/yyyy 

LocalDate date = 
    DateTimeFormat.mediumDate().withLocale(Locale.US).parseLocalDate("09/29/2014"); 
DateTime dt = date.toDateTimeAtStartOfDay(DateTimeZone.forID("America/Los_Angeles")); 

, 당신은 또한 글로벌 타임 스탬프에 구문 분석 날짜를 변환하기 위해 (예 : 미국 - 캘리포니아) 시계 시간을 알 수 및 시간대 (= 예에 하루의 시작)가 필요합니다 DateTime입니다.

+1

참고로 대체 구문은 ['DateTimeFormat.forStyle()'] (http://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat.html#forStyle java.lang.String)) 한 쌍의 문자를 전달합니다. 한 문자는 날짜 부분에 전달하고 다른 문자는 시간 부분에 전달하십시오. 짧은 스타일은 'S', 중간은 'M', 길게는 'L', 전체는 'F'의 문자를 지정하십시오. 스타일 문자 '-'를 지정하여 날짜 나 시간을 생략 할 수 있습니다. –

+0

@BasilBourque 좋은 코멘트 주셔서 감사합니다. –