현재 날짜와 시간을 얻는 방법 어떻게합니까? DateTime.NowC # 과 동등한 것을 찾고 있습니다.

Java에서 현재 날짜와 시간을 얻으려면 어떻게합니까?

DateTime.NowC # 과 동등한 것을 찾고 있습니다.



답변

Date인수없이 새로운 객체를 만들면됩니다. 현재 날짜와 시간이 새 개체에 할당됩니다.

import java.util.Date;

Date d = new Date();

의 말에 javadoc의 에 대한 제로 인수 생성자 :

Date 객체 를 할당 하고 가장 가까운 밀리 초 단위로 측정 된 시간을 나타내도록 초기화합니다 .

확인 당신이 사용하고 java.util.Date이 아니라 java.sql.Date전혀 다른 대화의 주제입니다 다소 다른 의미를, 후자는 제로 인수 생성자를 가지고 있지 않으며,이 -. 🙂


답변

많은 사람들은 Java DateCalendar 클래스를 제대로 설계하지 않은 것으로 간주합니다. Java 내장 날짜 라이브러리 대신 일반적으로 사용되는 라이브러리 인 Joda Time을 살펴보십시오 .

DateTime.NowJoda Time 과 동등한 기능은 다음과 같습니다 .

DateTime dt = new DateTime();

최신 정보

의견에서 언급했듯이 Joda Time의 최신 버전에는 다음과 같은 DateTime.now()방법이 있습니다.

DateTime dt = DateTime.now();


답변

tl; dr

Instant.now()

java.time

java.util.Date 클래스는 Java 8 이상의 새로운 java.time 패키지 ( Tutorial )에 의해 수정되었습니다 . 오래된 java.util.Date/.Calendar 클래스는 매우 번거롭고 혼란스럽고 결함이 있습니다. 피하십시오.

ZonedDateTime

java.time에서 현재 순간을 가져옵니다.

ZonedDateTime now = ZonedDateTime.now();

ZonedDateTime캡슐화 :

시간대를 지정하지 않으면 JVM의 현재 기본 시간대가 자동으로 지정됩니다. 기본적으로 암시 적으로 의존하는 것보다 원하는 / 예상 시간대를 지정하는 것이 좋습니다.

ZoneId z = ZoneId.of( "Pacific/Auckland" );
ZonedDateTime zdt = ZonedDateTime.now( z );

UTC

일반적으로 UTC 로 백엔드 작업 (비즈니스 로직, 데이터베이스, 스토리지, 데이터 교환)을하는 습관을들이는 것이 좋습니다. 시간대 . 위의 코드는 JVM의 현재 기본 시간대에 암시 적으로 의존합니다.

Instant클래스는 나노초의 해상도를 가진 UTC의 타임 라인에서 잠시 시간을 나타냅니다.

Instant instant = Instant.now();

Instant클래스는 java.time의 기본 빌딩 블록 클래스이며 코드에서 자주 사용될 수 있습니다.

보다 유연한 형식 지정이 필요하면로 변환하십시오 OffsetDateTime. ZoneOffset객체를 지정하십시오 . UTC의 경우 편리한 상수 상수를 사용하십시오 .

OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC );

시간대

사용자에게 표시 할 다른 시간대로 쉽게 조정할 수 있습니다. 용도 적절한 시간대 이름을 , 결코 같은 3-4 문자 코드 ESTIST.

ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime nowMontreal = instant.atZone( z );

현지화 된 해당 날짜-시간 값의 문자열 표현을 생성하십시오.

String output = DateTimeFormatter
    .ofLocalizedDate( FormatStyle.FULL )
    .withLocale( Locale.CANADA_FRENCH )
    .format ( nowMontreal );

Instant

또는 UTC를 유지하려면을 사용하십시오 Instant. Instant객체는 항상 UTC에, 나노초 해상도로, 타임 라인에 잠시 시간을 나타냅니다. 이는 시간대 지정과 함께 시간 대별 날짜-시간의 빌딩 블록을 제공합니다. 개념적으로 다음과 같이 생각할 수 있습니다.

ZonedDateTime= Instant+ZoneId

당신은 추출 할 수 있습니다 InstantA로부터를 ZonedDateTime.

Instant instantNow = zdt.toInstant();

인스턴트로 시작할 수 있습니다. Instant항상 UTC 와 같이 시간대를 지정할 필요가 없습니다 .

Instant now = Instant.now();


답변

Calendar 객체를 선호합니다.

Calendar now = GregorianCalendar.getInstance()

작업하기가 훨씬 쉽다는 것을 알았습니다. 달력에서 Date 객체를 가져올 수도 있습니다.

http://java.sun.com/javase/6/docs/api/java/util/GregorianCalendar.html


답변

Java 8에서는 다음과 같습니다.

ZonedDateTime dateTime = ZonedDateTime.now();


답변

import java.util.Date;
Date now = new Date();

점을 유의 날짜 정교한 아무것도 사용하고 싶은 경우 개체를 변경할 수 있으며 jodatime을 .


답변

java.lang.System.currentTimeMillis(); 시대 이후 날짜 시간을 반환합니다