2012-11-22 6 views
4

android and joda time lib - 나는 사용자의 시간대를 나중에 형식화하기 위해 변환하려고합니다. 예를 들어 2012-11-12T21 : 45 : 00 + 02 : 00입니다.안드로이드 시간 iso 8601

DateTimeZone zone = DateTimeZone.forID(TimeZone.getDefault().getID()); 

위의 코드가 실패 - 아무도 내가 "유럽/런던"(Timezone.getID)를 받아 그것이 그렇게 오프셋 내가 ISO에 넣을 수 8601 형식으로 변환 할 수있는 방법을 알고?

답변

5

나는 정확하게 SimpleDateFormat 클래스를 사용할 수 있습니다.

예제 코드 :

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.UK); 
String formattedDate = sdf.format(new Date()); 

당신은 docmentation 볼 수 있습니다

감사 SimpleDateFormat인치

+1

나는이 형식으로 필요 - 11-12T21 : 45 : 00 + 02 : 00 – Ranco

+0

당신은 당신의 코멘트에 년을 누락,하지만 내가 위의 코드에서 사용되는 형식입니다 . – Luis

+0

형식 문자열에 따옴표가 없습니다. – ValarDohaeris

1

API 레벨 26은 Java의 많은 시간 및 날짜 클래스에 대한 지원을 추가했습니다. 그래서이 솔루션은 이제 적용 할 수 있습니다 https://stackoverflow.com/a/25618897/3316651

// works with Instant 
Instant instant = Instant.now(); 
System.out.println(instant.format(DateTimeFormatter.ISO_INSTANT)); 

// works with ZonedDateTime 
ZonedDateTime zdt = ZonedDateTime.now(); 
System.out.println(zdt.format(DateTimeFormatter.ISO_INSTANT)); 

// example output 
2014-09-02T08:05:23.653Z 

크레딧 JodaStephen에.

안드로이드 문서 : https://developer.android.com/reference/java/time/format/DateTimeFormatter.html#ISO_INSTANT

+0

FYI : * java.time * 기능의 상당 부분이 [*** ThreeTen-Backport ***] (http://www.threeten.org/threetenbp/) 프로젝트의 Java 6 및 Java 7로 다시 포팅되었습니다. . [*** ThreeTenABP ***] (https://github.com/JakeWharton/ThreeTenABP) 프로젝트의 초기 안드로이드에 더 적합합니다. [* ThreeTenABP 사용법 *] (http://stackoverflow.com/q/38922754/642706)을 참조하십시오. –

관련 문제