tl; dr
Instant.now()
.toString()
2016-05-06T23 : 24 : 25.694Z
ZonedDateTime
.now
(
ZoneId.of( "America/Montreal" )
)
.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )
.replace( "T" , " " )
2016-05-06 19 : 24 : 25.694
java.time
Java 8 이상에는 Java 8 이상에 내장 된 java.time 프레임 워크 가 있습니다 . 이 새로운 클래스는 번거로운 오래된 java.util.Date/.Calendar 클래스를 대체합니다. 새로운 클래스는 개념적으로 유사하지만 재구성 된 후계자로 의도 된 매우 성공적인 Joda-Time 프레임 워크에서 영감을 받았습니다 . JSR 310에 의해 정의됩니다 . ThreeTen-Extra에 의해 확장 프로젝트로 . 학습서를 참조하십시오 .
java.time은 나노초 가 가능합니다. java.util.Date & Joda-Time 의 밀리 초 해상도 (소수점 3 자리 )와 비교하여 해상도 (소수 초의 소수 자리 9 자리 )를 사용할 수 있습니다. 따라서 소수점 이하 세 자리 만 표시하도록 서식을 지정하면 데이터를 숨길 수 있습니다.
데이터에서 마이크로 초 또는 나노초를 제거하려면 잘립니다.
Instant instant2 = instant.truncatedTo( ChronoUnit.MILLIS ) ;
java.time 클래스는 문자열 구문 분석 / 생성시 기본적으로 ISO 8601 형식을 사용 합니다. Z
끝에 있는 A 는 짧고 Zulu
의미합니다. UTC를 합니다.
은 Instant
최대의 해상도 UTC의 타임 라인에 잠시 나타냅니다 나노초 . Java 8에서 현재 순간 을 캡처하는 것은 밀리 초로 제한 되며 Java 9의 새로운 구현은 컴퓨터의 하드웨어 시계 기능에 따라 최대 나노초까지 캡처합니다.
Instant instant = Instant.now (); // Current date-time in UTC.
String output = instant.toString ();
2016-05-06T23 : 24 : 25.694Z
를 교체 T
공백으로 중간에, 그리고 Z
아무것도가 원하는 출력을 얻을 수 있습니다.
String output = instant.toString ().replace ( "T" , " " ).replace( "Z" , "" ; // Replace 'T', delete 'Z'. I recommend leaving the `Z` or any other such [offset-from-UTC][7] or [time zone][7] indicator to make the meaning clear, but your choice of course.
2016-05-06 23 : 24 : 25.694
오프셋 또는 시간대를 포함하지 않아도되므로 특정 지역과 관련이없는 "현지"날짜-시간을 만드십시오.
String output = LocalDateTime.now ( ).toString ().replace ( "T", " " );
조다 타임
매우 성공적인 Joda-Time 라이브러리는 java.time 프레임 워크에 대한 영감이었습니다. 편리한 경우 java.time으로 마이그레이션하는 것이 좋습니다.
ISO 8601 형식 (밀리 초)을 포함하며, 기본값입니다 Joda 타임 2.4 라이브러리.
System.out.println( "Now: " + new DateTime ( DateTimeZone.UTC ) );
달릴 때…
Now: 2013-11-26T20:25:12.014Z
또한 필요한 경우 밀리 초를 초 단위로 숫자로 요청할 수 있습니다.
int millisOfSecond = myDateTime.getMillisOfSecond ();