자바 날짜 마감 시간 정보


120

날짜 및 시간 정보가 포함 된 Java Date 객체가 있습니다. 시간 정보를 자르고 시간-분-초를 자르는 방법을 작성하고 싶습니다. 그래서 날짜 만 남았습니다.

입력 예 :

2008-01-01 13:15:00

예상 출력 :

2008-01-01 00:00:00

팁이 있습니까? 나는 다음과 같은 것을 시도했다.

(timestamp / (24 * 60 * 60 * 1000)) * (24 * 60 * 60 * 1000)

하지만 시간대에 문제가 생겼습니다.

답변:


178

추천 날짜 / 시간 조작을 할 수있는 방법은 사용하는 Calendar개체를 :

Calendar cal = Calendar.getInstance(); // locale-specific
cal.setTime(dateObject);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
long time = cal.getTimeInMillis();

2
@cletus, Date 객체에서 시간을 제거 할 수 있습니까? 나는 2008-01-01과 같은 순수한 날짜를 원합니다.
Prem

2
java.util.Calendar를 권장하지 않습니다. Sun / Oracle은 Java 8의 해당 클래스를 새로운 java.time 패키지로 대체했습니다. 저것 또는 Joda-Time을 사용하십시오.
Basil Bourque 2014-06-20

3
캘린더는 더 이상 권장되지 않습니다. Java 8을 사용하는 경우 stackoverflow.com/a/28868089/40064를 참조하십시오.
Wim

2
참고로, 귀찮은 된 날짜 - 시간 클래스는 다음과 같은 java.util.Calendar지금 기존 에 의해 대체, java.time의 클래스. Oracle의 Tutorial을 참조하십시오 .
Basil Bourque

147

Apache Commons Lang에서 DateUtils truncate 메소드를 보셨습니까 ?

Date truncatedDate = DateUtils.truncate(new Date(), Calendar.DATE);

시간 요소를 제거합니다.


9
링크를 다시 업데이트했습니다 (Apache에 오세요! 문서 이동을 종료하세요!)
Ogre Psalm33

6
이 접근 방식에서 잘라 내기 작업이 수행되는 시간대는 항상 로컬 PC 시간대입니다. 따라서 UTC 시간대 또는 현지 시간대 이외의 시간대에서 달력 및 날짜로 작업하는 경우 의도 한대로 날짜가 잘릴 수 있습니다.
Cloud

@Cloud는 지적 :) 나 A가 신경 비트 수, 내가 여기에 일정 인스턴스를 참조하지 않는다는 사실은 (는 통제 할 수 없음)
야로슬라프 Záruba을

이 방법은 놀랍도록 길고 적어도 두 번의 버그 수정이있었습니다.
Pino

42

Joda를 보셨습니까 ? 날짜와 시간으로 작업 하는 훨씬 쉽고 직관적 인 방법입니다. 예를 들어 LocalDateTimeLocalDate 객체 사이에서 사소하게 변환 할 수 있습니다 .

예 (API를 설명하기 위해)

LocalDate date = new LocalDateTime(milliseconds).toLocalDate()

또한 날짜 / 시간 포맷터의 일부 스레드 안전성 문제를 해결하며 Java의 모든 날짜 / 시간 문제에 대해 작업 할 때 강력히 권장됩니다.


12
나는 그것을 믿는다. 깨진 java.util 클래스와 싸우는 것보다 더 나은 라이브러리를 사용하는 것이 좋습니다 (질문에 의해 입증 됨)
Brian Agnew

10
물론 Joda는 Java에서 날짜, 시간 및 달력 조작을위한 라이브러리입니다. 그것을 추천하지 않는 것은 의무를 포기하는 것입니다.
Joel

1
스레드 안전 문제는 매우 흥미 롭습니다.이 게시물에서 Oracle / Hibernate 오류 "IllegalArgumentException, sun.util.calendar.ZoneInfo.getOffset (ZoneInfo), oracle.jdbc.driver.DateCommonBinder.zoneOffset (OraclePreparedStatement)"를 조사했습니다. 이것은 무거운로드 포럼 에서만 나타나는 또 다른 오라클 문제에 대해 이야기 합니다. 필자는 오라클이 의심 스러울 수있는 non-joda를 사용하도록하는 것보다 Joda를 사용하여 내 스레드에서 다운 캐스트 할 것이라고 생각합니다.
Mark Bennett

4
나는 이것을 찬성 한 모든 사람들에게 반대 투표를 할 수 있기를 바랍니다. 질문에 답하지 않는 답장을 +1 한 사람들은 누구입니까? Joda를 사용하는 대답은 환영보다 더 많은 것, 그러나 이것은 ... 그것은하지 않습니다
라이언

1
@Ryan이 대답은 어떻게 관련이 없습니까? 질문은 시간없이 날짜를 요청했습니다. 이 답변은 시간이없는 날짜를 나타내는 것이 유일한 목적인 클래스를 나타냅니다.
Basil Bourque

35

이제 Java 8 이상에 내장 된 java.time 클래스 에 비추어 간단한 업데이트입니다 .

LocalDateTimetruncatedTo여기서 말하는 내용을 효과적으로 해결 하는 방법이 있습니다.

LocalDateTime.now().truncatedTo(ChronoUnit.MINUTES)

이것은 현재 시간을 분 단위로만 표현합니다.

2015-03-05T11:47

자르기를 실행하기 위해 DAYS보다 작은 ChronoUnit(또는 TemporalUnit)을 사용할 수 있습니다 ( 잘림은 날짜 부분이 아닌 LocalDateTime의 시간 부분에만 적용되므로).


3
ChronoUnits는 최대 DAYS까지만 사용할 수 있습니다. 높은 단위는 예외를 발생시킵니다.
assylias

26
Date date = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
date = cal.getTime();

22

Joda를 사용하면 예상 날짜를 쉽게 얻을 수 있습니다.

버전 2.7부터 (아마도 2.2보다 큰 이전 버전 이후 일 수 있음), 주석가가 언급했듯이 toDateMidnight더 이상 사용되지 않거나 적절하게 이름이 지정 withTimeAtStartOfDay()되어 편리합니다.

DateTime.now().withTimeAtStartOfDay()

가능한.

더 좋은 API의 이점이 추가되었습니다.

이전 버전에서는 다음을 수행 할 수 있습니다.

new DateTime(new Date()).toDateMidnight().toDate()

6
Joda-Time의 자정 관련 메서드 및 클래스는 이제 더 이상 사용되지 않습니다. 개발자는 사용하지 않는 것이 좋습니다. 대신 방법을 사용하십시오 withTimeAtStartOfDay.
Basil Bourque 2014-06-20

지적 해 주셔서 감사합니다. 이것을 고려하기 위해 답변을 업데이트했습니다.
h7r

toLocalDate시간 구성 요소도없는 객체를 가져 오는 데 사용할 수도 있습니다 .
Charles Wood

참고로 Joda-Time 프로젝트는 이제 유지 관리 모드 에 있으며 팀은 java.time 클래스 로의 마이그레이션을 조언합니다 . Oracle의 Tutorial을 참조하십시오 .
Basil Bourque

8

새로운 java8 API로 잘림을 수행했습니다. 나는 이상한 일에 직면했지만 일반적으로 잘립니다 ...

Instant instant = date.toInstant();
instant = instant.truncatedTo(ChronoUnit.DAYS);
date = Date.from(instant);

키워드 : java.time, 자바 8 LocalDateTime.truncatedTo ()
알렉산더 테일러

1
이 답변은 UTC 시간대의 컨텍스트에 대한 날짜 만 생성합니다.
Basil Bourque

6

Apache의 DateUtils를 다음과 같이 자르기와 함께 사용하십시오.

DateUtils.truncate(Calendar.getInstance().getTime(), Calendar.DATE);

이것은 Date (getTime)가 나타내는 UTC가 아닌 로컬 TimeZone에서 잘립니다.
epox

6

타임 스탬프 :

timestamp -= timestamp % (24 * 60 * 60 * 1000)

3
이 코드에는 작은 오류가 있습니다. 왼쪽 대괄호가 올바르게 배치되지 않았습니다. 타임 스탬프-= 타임 스탬프 % (24 * 60 * 60 * 1000) 여야합니다. 이것은 시간 부분을 차단합니다. 그리고이 방법이 Caledar 객체를 만들고 그 방법을 사용하거나 다른 타사 라이브러리를 사용하는 것보다 더 충분하다고 확신합니다
Stan

2
아니요, 이것은 올바른 해결책이 아닙니다. 이는 날짜 값을 하한값으로 반올림하는 것과 같습니다. 즉, 3 월 29 일의 타임 스탬프에 대해 3 월 28 일을 얻을 수 있습니다 (사용자 로케일). 따라서 캘린더 기반 솔루션 (Apache의 DateUtils도 캘린더 사용)이 유일한 방법입니다
Drew

일광 절약 시간으로 인해 시간이 변경된 경우에도 작동하지 않습니다.
Alexandru Severin

5

java.util.Date JavaDocs에서 :

Date 클래스는 밀리 초 정밀도로 특정 순간을 나타냅니다.

그리고 java.sql.Date JavaDocs에서 :

SQL DATE의 정의를 따르려면 인스턴스가 연결된 특정 시간대에서 시간, 분, 초 및 밀리 초를 0으로 설정하여 java.sql.Date 인스턴스로 래핑 된 밀리 초 값을 '정규화'해야합니다. .

따라서 가장 좋은 방법은 시간 부분이 필요하지 않은 경우 java.sql.Date를 사용하는 것입니다.

java.util.Date utilDate = new java.util.Date();
java.sql.Date sqlDate = new java.sql.Date(System.currentTimeMillis());

출력은 다음과 같습니다.

java.util.Date : Thu Apr 26 16:22:53 PST 2012
java.sql.Date  : 2012-04-26

4

tl; dr

LocalDateTime.parse(                            // Lacking an offset or time zone, parse as a `LocalDateTime`. *Not* a specific moment in time.
    "2008-01-01 13:15:00".replace( " " , "T" )  // Alter input string to comply with ISO 8601 standard format.
)
.toLocalDate()                                  // Extract a date-only value.
.atStartOfDay(                                  // Do not assume the day starts at 00:00:00. Let class determine start-of-day.
    ZoneId.of( "Europe/Paris" )                 // Determining a specific start-of-day requires a time zone.
)                                               // Result is a `ZonedDateTime` object. At this point we have a specific moment in time, a point on the timeline.
.toString()                                     // Generate a String in standard ISO 8601 format, wisely extended to append the name of the time zone in square brackets.

2008-01-01T00 : 00 + 01 : 00 [유럽 / 파리]

원하는 형식으로 문자열을 생성하려면 DateTimeFormatter.

LocalDateTime.parse(                            // Lacking an offset or time zone, parse as a `LocalDateTime`. *Not* a specific moment in time.
    "2008-01-01 13:15:00".replace( " " , "T" )  // Alter input string to comply with ISO 8601 standard format.
)
.toLocalDate()                                  // Extract a date-only value.
.atStartOfDay(                                  // Do not assume the day starts at 00:00:00. Let class determine start-of-day.
    ZoneId.of( "Europe/Paris" )                 // Determining a specific start-of-day requires a time zone.
)                                               // Result is a `ZonedDateTime` object. At this point we have a specific moment in time, a point on the timeline.
.format(                                        // Generate a String representing the object’s value.
    DateTimeFormatter.ISO_LOCAL_DATE_TIME       // Built-in predefined formatter close to what you want. 
)
.replace( "T" , " " )                           // Replace the standard’s use of a 'T' in the middle with your desired SPACE character.

2008-01-01 00:00:00

세부

다른 답변은 정확하지만 이제 java.time 프레임 워크에 의해 구식 된 이전 날짜 시간 클래스를 사용하십시오.

java.time

java.time 프레임 워크는 Java 8 이상에 빌드됩니다. java.time 기능의 대부분은 Java 6 및 7 ( ThreeTen-Backport ) 로 백 포팅 되고 Android ( ThreeTenABP )에 추가로 적용됩니다 .

먼저 ISO 8601 형식의 표준 버전을 준수하도록 입력 문자열을 변경합니다. 표준 ISO 8601 형식은 날짜-시간 값을 나타내는 문자열을 구문 분석 / 생성하기 위해 java.time 클래스에서 기본적으로 사용됩니다. 중간에있는 SPACE를 T.

String input = "2008-01-01 13:15:00".replace( " " , "T" );  // → 2008-01-01T13:15:00

이제 LocalDateTime"Local"은 특정 지역이 없음을 의미 하는으로 구문 분석 할 수 있습니다. 입력에 UTC 또는 시간대 정보 로부터의 오프셋 이 없습니다 .

LocalDateTime ldt = LocalDateTime.parse( input );

ldt.toString ()… 2008-01-01T13 : 15 : 00

시간이나 시간대에 신경 쓰지 않는다면 LocalDate.

LocalDate ld = ldt.toLocalDate();

ld.toString ()… 2008-01-01

첫 순간

대신 시간을 하루의 첫 번째 순간으로 설정하려면 ZonedDateTime클래스를 사용한 다음 LocalDate객체 로 변환하여 해당 atStartOfDay메서드 를 호출하십시오 . 첫 번째 순간은 00:00:00일광 절약 시간 또는 기타 예외로 인해 시간이 아닐 수 있습니다 .

시간대는 특정 순간에 날짜가 전 세계적으로 지역별로 다르기 때문에 중요합니다. 예를 들어, 파리의 자정 이후 몇 분이 파리 인에게는 새로운 날이지만 캐나다인에게는 몬트리올에서는 여전히 "어제"입니다.

ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ldt.atZone( zoneId );
LocalDate ldFromZdt = zdt.toLocalDate();
ZonedDateTime zdtStartOfDay = ldFromZdt.atStartOfDay( zoneId );

zdtStartOfDay.toString ()… 2008-01-01T00 : 00 : 00-05 : 00 [미국 / 몬트리올]

UTC

UTC 시간대 의 렌즈를 통해 그 순간을 보려면 Instant객체를 추출하십시오 . ZonedDateTime및 둘 다 Instant타임 라인에서 동일한 순간을 나타내지 만 두 개의 다른 벽시계 시간 으로 나타납니다 .

An Instant은 java.time의 기본 빌딩 블록 클래스이며 정의에 따라 항상 UTC로 표시됩니다. 일반적으로 비즈니스 로직, 데이터 저장 및 데이터 교환을 UTC로 수행해야하므로이 클래스를 자주 사용하십시오.

Instant instant = zdtStartOfDay.toInstant();

instant.toString ()… 2008-01-01T05 : 00 : 00Z

자정이 아닌 오전 5 시가 보입니다. 표준 형식 Z에서 끝은 Zulu"UTC"를 의미합니다.


java.time 정보

java.time의 프레임 워크는 나중에 자바 8에 내장되어 있습니다. 이 클래스는 까다로운 기존에 대신 기존 과 같은 날짜 - 시간의 수업을 java.util.Date, Calendar, SimpleDateFormat.

Joda 타임 프로젝트는 지금에 유지 관리 모드 의로 마이그레이션을 조언 java.time의 클래스.

자세한 내용은 Oracle Tutorial을 참조하십시오 . 그리고 많은 예제와 설명을 위해 Stack Overflow를 검색하십시오. 사양은 JSR 310 입니다.

java.time 객체를 데이터베이스와 직접 교환 할 수 있습니다 . JDBC 4.2 이상을 준수 하는 JDBC 드라이버를 사용하십시오 . 문자열이나 클래스 가 필요하지 않습니다 .java.sql.*

java.time 클래스는 어디서 구할 수 있습니까?

ThreeTen - 추가 프로젝트 추가 클래스와 java.time를 확장합니다. 이 프로젝트는 java.time에 향후 추가 할 수있는 가능성을 입증하는 곳입니다. 당신은 여기에 몇 가지 유용한 클래스와 같은 찾을 수 있습니다 Interval, YearWeek, YearQuarter, 그리고 .



2

문제는 모순적입니다. 시간이없는 날짜를 요청하지만 시간이있는 예를 표시합니다 00:00:00.

Joda-Time

UPDATE : Joda 타임 프로젝트에 지금 유지 관리 모드 받는 마이그레이션을 조언 팀과 함께, java.time의 클래스. java.time 솔루션에 대한 다른 답변 을 참조하십시오 .

대신 시간을 하루의 첫 번째 순간으로 설정 DateTime하려면 Joda-Time 라이브러리 의 개체를 사용하고 해당 withTimeAtStartOfDay메서드를 호출하십시오 . 첫 번째 순간은 00:00:00일광 절약 시간 또는 기타 예외로 인해 시간이 아닐 수 있습니다 .


이것은 확실한 대답 (즉, 한 수 가정 및 Joda 시간을 사용하고 싶어)입니다
클린트 이스트 우드

2

그냥 clear()중복 필드.

Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.clear(Calendar.MINUTE);
calendar.clear(Calendar.SECOND);
calendar.clear(Calendar.MILLISECOND);
Date truncatedDate = calendar.getTime();

Java 8에서 더 나은 옵션은 다음과 같은 truncatedTo메소드 를 사용 하는 것입니다 LocalDateTime.

LocalDateTime.now().truncatedTo(ChronoUnit.DAYS)

이것은 작동하지 않습니다. 왜냐하면 calendar.clear(Calendar.HOUR_OF_DAY);시간이 명확하지 않기 때문 입니다. @cletus의 솔루션은 정상적으로 작동합니다.
Arcao

죄송합니다. 맞습니다. 몇 시간 동안 값을 설정해야합니다. 일반적으로 날짜를 자르는 방법과 거의 같은 방식으로 ...
m190

1

새로운 "개선 된"달력 생성자가 "끔찍한"오래된 날짜처럼 밀리 초 동안 int를 사용하지 않는다는 사실이 정말 짜증났습니다. 나는 정말로 십자가를 가지고 이것을 썼다.

long stuffYou = startTime.getTimeInMillis() % 1000;
startTime.setTimeInMillis(startTime.getTimeInMillis() - stuffYou);

나는 그 당시에 "stuff"라는 단어를 사용하지 않았는데, 그때 나는 이것의 행복을 발견했습니다.

startTime.set(Calendar.MILLISECOND, 0);

그러나 나는 여전히 그것에 대해 상당히 교차합니다.


1

다음과 같은 문제를 해결했습니다 (동쪽 8 개 지역 (북경 시간)).

private Date getTruncatedDate(Date d) {
    if (d == null) {
        return null;
    }
    long h = 60 * 60 * 1000L;
    long dateStamp = d.getTime() - (d.getTime() + 8 * h) % (24 * h);
    return new Date(dateStamp);
}

먼저 타임 스탬프가 무엇인지 명확히해야합니다. 타임 스탬프는 GMT 1970 년 1 월 1 일 00:00:00 (UTC와 동일) 또는 Thu Jan 01 08:00:00 CST 1970에서 현재까지의 총 밀리 초입니다.

기억하세요 : 타임 스탬프는 시간대와 무관합니다.

따라서 다른 시간대에서 다음 문으로 동일한 결과를 얻습니다.

System.out.println(new Date().getTime());

System.out.println(new Date(0));

다른 시간대의 다른 시간 정보를 인쇄합니다. PC 시간대를 UTC로 설정하면

Thu Jan 01 00:00:00 UTC 1970

그러나 시간대를 (UTC +8 : 00) Beijing, Chongqing, HongKong, Urumq로 설정하면 다음을 얻을 수 있습니다.

Thu Jan 01 08:00:00 CST 1970

Java는 타임 스탬프를받은 다음 시간대에 따라 날짜 및 시간 정보를 표시합니다.

Java가 다른 시간대에서 날짜 및 시간 정보를 표시하는 방법을 소개하려면 시간 정보를 변환하는 방법이 쉽습니다. 타임 스탬프를 확인하고 시간 정보를자를 때 시간대를 고려해야합니다. 그런 다음 잘라낸 타임 스탬프 (날짜 스탬프라고 부를 수 있음)를 사용하여 새 Date 객체를 만들 수 있으며 Java는 날짜 정보를 표시 할 때 시간대를 보정합니다.

동부 8 개 지역 (북경 시간)과 마찬가지로 베이징 시간은 GMT보다 8 시간 빠르므로 모듈로 작업을 수행 할 때 8 시간을 더 빼야합니다. 즉, 먼저 GMT 시간을 얻어야합니다. 그러면 Java는 PC의 시간대 설정에 따라 시간을 표시 할 때 8 시간을 추가합니다.


시간대 문제는 모호하며 오랫동안 저를 당혹스럽게합니다. 이제 명확하게합니다. 희망이 도움이됩니다.


2018-01-04 아래 방법도 작동합니다.

private Date getTruncatedDate2(Date d) {
    Calendar cal = Calendar.getInstance(); // locale-specific
    cal.setTime(d);
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);


return cal.getTime();

}


참고로,이 답변은 몇 년 전에 java.time 클래스로 대체 된 성가신 오래된 날짜 시간 클래스를 사용합니다 .
바질 우르 큐

1

이렇게하면 시간대 문제를 방지 할 수 있습니다.

public static Date truncDate(Date date) {
    Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
    cal.setTime(date);
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    return cal.getTime();
}

Java Date객체는 타임 스탬프 값이지만 자르는 동안 현지 시간대로 변환되므로 UTC 시간대에서 값을 예상하면 놀라운 값을 얻을 수 있습니다.


성가신 CalendarDate클래스는 레거시 년 전되었다 java.time의 나중에 자바 8에서 JSR 310를 구현하는 클래스. 2018 년 사용을 제안하는 것은 좋지 않은 조언입니다.
Basil Bourque

0

늦게 응답 할 수 있지만 여기에 라이브러리를 사용하지 않고 한 줄로 수행하는 방법이 있습니다.

new SimpleDateFormat("yyyy-MM-dd").parse(new SimpleDateFormat("yyyy-MM-dd").format(YOUR_TIMESTAMP))

0

함께 Joda 타임 버전 2.0 이후 사용할 수 있습니다 LocalDate.toDate().

간단히

// someDatetime is whatever java.util.Date you have.
Date someDay = new LocalDate(someDatetime).toDate();

[A] 당신의 대답은 중복됩니다. 이미 Brian Agnew가 게시했습니다 . [B] 질문에서 제기 된 바로 그 문제인 시간대를 무시하므로 코드가 올바르지 않습니다.
바질 우르 큐

중복 될 수는 있지만 댓글에 답이 있어서는 안된다는 것을 알았 기 때문에 여기에 더 간단한 예를 넣었습니다. 예, java.util.Date는 시간대 무시하지만, 원래의 질문으로이었다 a Java Date object내가 사용하여 java.util.Date. 더욱이 Date.
lamusique

0

캘린더를 사용하는 모든 답변에 대해 대신 다음과 같이 사용해야합니다.

public static Date truncateDate(Date date) {
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    c.set(Calendar.HOUR_OF_DAY, c.getActualMinimum(Calendar.HOUR_OF_DAY));
    c.set(Calendar.MINUTE, c.getActualMinimum(Calendar.MINUTE));
    c.set(Calendar.SECOND, c.getActualMinimum(Calendar.SECOND));
    c.set(Calendar.MILLISECOND, c.getActualMinimum(Calendar.MILLISECOND));
    return c.getTime();
}

하지만 나는 이것을 선호합니다 :

public static Date truncateDate(Date date) {
    return new java.sql.Date(date.getTime());
}

java.sql.Date클래스는 날짜 전용 값을 표현하는 척하지만 실제로는 시간의 일 UTC 시간대 조정을 가지고있다. 따라서 질문에 대한 적절한 해결책이 아닙니다.
Basil Bourque

0

다음은 Java 8 이상을 사용하는 경우 시간없이 날짜를 가져 오는 간단한 방법 입니다. 날짜 대신 java.time.LocalDate 유형을 사용하십시오 .

LocalDate now = LocalDate.now();
 System.out.println(now.toString());

출력 :

2019-05-30

https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html


1
사용 LocalDate은 대부분의 목적에서 좋은 생각이지만 이것이 질문의 입력으로 어떻게 작동하는지 확실하지 않습니다 2008-01-01 13:15:00.
Ole VV
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.