TL; DR
ZonedDateTime
.now(ZoneId.of("America/Montreal"))
.format(DateTimeFormatter.ofPattern("MMddHHmmss"))
java.time
현대적인 방법은 기존의 레거시 날짜 -을 대신하는 java.time 클래스 함께 시간 수업.
Instant
잡고 Instant
클래스 UTC에서 현재의 순간. Instant
클래스는 nanoseconds (소수 자릿수 9 자릿수까지)의 해상도로 UTC의 타임 라인에있는 순간을 나타냅니다.
Instant instant = Instant.now(); // UTC
UTC를 사용하는 것이 가장 좋습니다. 그렇다면 형식이 더 유연한 OffsetDateTime
으로 변환하십시오. ZoneOffset.UTC
상수를 지정하십시오.
OffsetDateTime odt = instant.atOffset(ZoneOffset.UTC);
DateTimeFormatter
원하는 형식의 DateTimeFormatter
을 정의합니다. 나는 그 해를 떠나지 않는 것이 좋습니다. 그러나 당신이 주장한다면, 여기에 우리가갑니다.
DateTimeFormatter f = DateTimeFormatter.ofPattern("MMddHHmmss");
해당 포맷터로 문자열을 생성하십시오.
ZonedDateTime
String output = odt.format(f);
은 특정 지역의
wall-clock time의 렌즈를 통해 같은 순간을 볼 수있는 시간대를 적용합니다.
proper time zone name을 continent/region
의 형식으로 지정하십시오. EST
또는 IST
과 같이 3-4 자 약어를 사용하지 마십시오. 표준 시간대가 아니며 고유하지 않습니다 (!).
ZoneId z = ZoneId.of("America/Montreal");
ZonedDateTime zdt = instant.atZone(z);
위의 그림과 같이 DateTimeFormatter
을 사용하여 문자열을 생성하십시오.
java.시간
java.time 프레임 워크는 Java 8 이상에 내장되어 있습니다. 이 클래스는 java.util.Date
, .Calendar
, & java.text.SimpleDateFormat
과 같이 문제가있는 이전 legacy 날짜 - 시간 클래스를 대체합니다.
Joda-Time 프로젝트는 현재 maintenance mode에 있으며, java.time으로 마이그레이션하는 것이 좋습니다.
자세히 알아 보려면 Oracle Tutorial을 참조하십시오. 그리고 많은 예제와 설명을 위해 스택 오버플로를 검색하십시오. 사양은 JSR 310입니다.
어디에서 java.time 클래스를 얻을 수 있습니까?
ThreeTen-Extra 프로젝트는 추가 클래스와 java.time를 확장합니다. 이 프로젝트는 향후 java.time에 추가 될 수있는 가능성을 입증합니다. 여기에 Interval
, YearWeek
, YearQuarter
및 more과 같은 유용한 클래스가 있습니다.
'타임 스탬프'를 사용하지 마십시오. ['SimpleDateFormat'] (http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html)을 사용하십시오. –