Java에서 현재 날짜를 문자열로 변환하는 방법은 무엇입니까?


답변:



62
// GET DATE & TIME IN ANY FORMAT
import java.util.Calendar;
import java.text.SimpleDateFormat;
public static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss";

public static String now() {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
return sdf.format(cal.getTime());
}

여기 에서 찍은


날짜 대신 달력을 사용하는 것이 가장 좋습니다.
무작위로

5
혼란 스러워요. 어떤 우주에서 Calendar더 바람직한가 Date?
jasonmp85 2010 년

1
참고로, 이러한 성가신 클래스는 이제 레거시이며 java.time 클래스로 대체되었습니다. Oracle Tutorial을 참조하십시오 .
Basil Bourque

27
// On the form: dow mon dd hh:mm:ss zzz yyyy
new Date().toString();

58
과도하게 달성해서 죄송합니다.
jasonmp85

2
그 방법에서 사용하는 형식은 끔찍합니다. 또한 KVM의 현재 기본 시간대가 암시 적으로 적용되므로 결과가 달라질 수 있습니다. 그리고 이러한 성가신 클래스는 이제 java.time 클래스로 대체 된 레거시입니다. Oracle Tutorial을 참조하십시오 .
Basil Bourque


14

tl; dr

LocalDate.now()
         .toString() 

2017-01-23

원하는 / 예상 시간대를 명시 적으로 지정하는 것이 좋습니다.

LocalDate.now( ZoneId.of( "America/Montreal" ) )
         .toString() 

java.time

Java 8 이상에서 최신 방식은 java.time 프레임 워크를 사용하는 것입니다.

특정 시점에 날짜가 전 세계적으로 다르므로 시간대를 지정하십시오.

ZoneId zoneId = ZoneId.of( "America/Montreal" ) ;  // Or ZoneOffset.UTC or ZoneId.systemDefault()
LocalDate today = LocalDate.now( zoneId ) ;
String output = today.toString() ;

2017-01-23

기본적으로 표준 ISO 8601 형식 의 문자열을 얻습니다 .

다른 형식의 경우 java.time.format.DateTimeFormatter클래스를 사용하십시오 .


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, 그리고 .



1

시간 (YYYY-MM-dd)

String time = new DateTime( yourData ).toString("yyyy-MM-dd");

그리고 DateTime의 라이브러리는 다음과 같습니다.

import org.joda.time.DateTime;


그리고 어떤 도서관 DateTime에서 왔습니까? 이 사이트는 스 니펫 라이브러리 이상을 의미하므로 Stack Overflow에 대한 답변에는 설명이 있어야합니다.
Basil Bourque

0

대부분의 답변은 유효합니다. 날짜 처리를위한 새로운 JAVA API 수정으로 Java 날짜 처리의 초기 모호성이 감소되었습니다.

유사한 호출에 대해 더 이상 사용되지 않는 메시지가 표시됩니다.

new Date() // deprecated

위의 호출에서는 개발자가 새 Date 객체가 현재 타임 스탬프와 함께 Date 객체를 제공한다고 가정했습니다. 이 동작은 다른 Java API 클래스에서 일관되지 않습니다.

이를 수행하는 새로운 방법은 캘린더 인스턴스를 사용하는 것 입니다.

new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime()

여기에서도 명명 규칙이 완벽하지는 않지만 이것은 많이 구성되어 있습니다. 문제를 해결하는 데 어려움을 겪고 있지만 논리적으로 들리거나 보이면 결코 잊지 않을 사람에게 이것은 좋은 접근 방식입니다.

이것은 실제 생활과 더 동의어입니다.

  1. Calendar 객체를 얻고 그 안에서 시간을 찾습니다. (당신은 아무도 달력에서 시간을 얻지 못한다는 것이 궁금 할 것입니다. 그래서 이것이 완벽하지 않다고 말한 이유입니다. 그러나 그것은 완전히 다른 주제입니다)
  2. 그런 다음 간단한 텍스트 형식의 날짜를 원하므로 1 단계에서 날짜 형식을 지정하는 데 도움이되는 SimpleDateFormat 유틸리티 클래스를 사용합니다. 형식의 매개 변수로 yyyy, MM, dd를 사용했습니다. 지원되는 날짜 형식 매개 변수

이를 수행하는 또 다른 방법은 Joda 시간 API를 사용하는 것입니다.

new DateTime().toString("yyyy-MM-dd")

또는 훨씬 명백한

new DateTime(Calendar.getInstance().getTime()).toString("yyyy-MM-dd")

둘 다 동일한 결과를 반환합니다.


참고로, 같은 귀찮은 된 날짜 - 시간 수업 java.util.Date, java.util.Calendar그리고 java.text.SimpleTextFormat지금 기존 에 의해 대체, java.time의 클래스. 또한 Joda-Time 프로젝트는 이제 유지 관리 모드 에 있으며 팀은 java.time으로의 마이그레이션을 조언합니다.
Basil Bourque

1
@BasilBourque 내 대답에서 가장 많이 득표 한 답변은 옳지 만 현재 개발자와 관련이 없다는 것입니다. 마지막으로 Java는 Clock 클래스를 가지며 Clock.getTime ()은 Date, DateTime 또는 Time 클래스보다 훨씬 더 현명하고 실제 생활을 모방합니다. Java 개발자는 OOPS가 실제 시나리오를 모방하는 것으로 시작되었음을 알아야합니다.
Swapnil Vargaonkar

참고 Clock로 Java 8 의 구현은 레거시 클래스와 정확히 동일합니다. Java 9에서만 나노초 단위의 정밀한 해상도로 현재 순간을 포착 할 수있는 새로운 구현이 제공됩니다.
Basil Bourque

네, 이것이 제가 "마지막"으로 작성한 이유입니다. Java는 실제 시나리오 (OOPS 개념)를 모방하고 현재 순간을 표시 / 캡처 (당신이 선호하는 방식)하는 Clock 클래스를 가질 것입니다.
Swapnil Vargaonkar

-2
public static Date getDateByString(String dateTime) {
        if(dateTime==null || dateTime.isEmpty()) {
            return null;
        }
        else{
            String modified = dateTime + ".000+0000";
            DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
            Date dateObj = new Date();
            Date dateObj1 = new Date();
            try {
                if (dateTime != null) {
                    dateObj = formatter.parse(modified);
                }

            } catch (ParseException e) {
                e.printStackTrace();
            }

            return dateObj;
        }

    }

1
이 코드에 대한 설명이 도움이 될 것입니다.
Pyves 2017-06-13

1
대답은 질문과 관련이 없습니다. 그리고 아니요, 어떤 String형식 의 날짜도 함수 에 전달할 수 없습니다 .
Jerin Joseph
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.