세 글자 시간대 코드
않도록 세 글자 시간대 코드를 사용. 그것들은 표준화되거나 고유하지 않습니다. 예를 들어 IST
은 인도 표준시 및 아일랜드 표준시를 모두 의미합니다. 또한 코드는 일광 절약 시간제 (DST)를 구별하기위한 것이지만 문제는 혼란 스럽습니다.
descriptive time zone names을 사용하여 DST 및 기타 문제를 포함하는 표준 시간대 개체를 검색하십시오.
는 Joda 타임
자바에 번들 된 java.util.Date & 달력 클래스는 악명 골칫거리입니다. 그들을 피하십시오. Joda-Time 또는 Java 8 번들로 제공되는 새로운 java.time. * 패키지를 사용하십시오.
JodaTime에서 DateTime 객체는 java.util.Date와는 달리 고유 한 시간대를 실제로 알고 있습니다. 보통 우리는 Joda-Time에서 불변 클래스를 사용합니다. 따라서 DateTime 객체에서 표준 시간대를 변경하는 대신 새 값인 DateTime 객체를 이전 버전을 기반으로하지만 지정된 차이를 기반으로 만듭니다. 다른 시간대가 그 차이 일 수 있습니다.
다음은 몇 가지 예제 코드입니다.
DateTimeZone timeZone_India = DateTimeZone.forID("Asia/Kolkata");
DateTimeZone timeZone_Ireland = DateTimeZone.forID("Europe/Dublin");
DateTimeZone timeZone_US_West_Coast = DateTimeZone.forID("America/Los_Angeles");
DateTime now = new DateTime(timeZone_India);
System.out.println("now in India: " + now);
System.out.println("now in Ireland: " + now.withZone(timeZone_Ireland));
System.out.println("now in US West Coast: " + now.withZone(timeZone_US_West_Coast));
System.out.println("now in UTC/GMT: " + now.withZone(DateTimeZone.UTC));
실행 ...
now in India: 2014-02-10T13:52:27.875+05:30
now in Ireland: 2014-02-10T08:22:27.875Z
now in US West Coast: 2014-02-10T00:22:27.875-08:00
now in UTC/GMT: 2014-02-10T08:22:27.875Z
자바.time
Joda-Time을 대신하는 java.time 클래스를 사용하는 것과 같은 아이디어.
Instant
클래스는 nanoseconds (소수 자릿수 9 자릿수까지)의 해상도로 UTC의 타임 라인에있는 순간을 나타냅니다.
Instant instant = Instant.now();
표준 시간대를 적용하십시오.
ZoneId z = ZoneId.of("America/Montreal");
ZonedDateTime zdt = instant.atZone(z);
instant
zdt
와 동일한 순간에, 타임 라인상의 동일한 점을 나타낸다. 각 렌즈는 다른 지역의 wall-clock time 렌즈를 통해 보입니다.
서식 패턴을 지정하거나 java.time이 자동으로 현지화되도록하여 문자열을 생성하십시오.
지정, 현지화 :
FormatStyle
문자열이 있어야 할 시간 또는 약식 결정.
Locale
(a) 일명, 월 이름 등의 번역을위한 인간 언어 및 (b) 약어, 대문자, 구두점 등의 문제를 결정하는 문화적 규범을 결정할 수 있습니다.
예 :
Locale l = Locale.CANADA_FRENCH ;
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL).withLocale(l);
String output = zdt.format(f);
방금 [Joda 시간]을 사용할 수 없습니다 (http://joda-time.sourceforge.net/)? –