tl; dr
LocalDate.parse(
"01-23-2017" ,
DateTimeFormatter.ofPattern( "MM-dd-uuuu" )
)
세부
yyyy-mm-dd 형식의 java.util.Date가 있습니다.
다른 언급과 같이 Date
클래스에는 형식이 없습니다. 1970 년이 시작된 이후 UTC로 밀리 초를 계산합니다. 첨부 된 문자열이 없습니다.
java.time
다른 Answers는 이제 java.time 클래스로 대체 된 귀찮은 오래된 레거시 날짜-시간 클래스를 사용합니다.
가있는 경우 객체 java.util.Date
로 변환하십시오 Instant
. 이 Instant
클래스는 나노초 단위 (소수점의 최대 9 자리) 의 해상도로 타임 라인의 한 순간을 UTC 로 나타냅니다 .
Instant instant = myUtilDate.toInstant();
시간대
다른 답변은 시간대의 중요한 문제를 무시합니다. 날짜를 결정하려면 시간대가 필요합니다. 주어진 순간에 날짜는 지역별로 전 세계적으로 다릅니다. 파리의 자정 이후 몇 분이 지나면 프랑스는 새로운 날이지만 몬트리올 퀘벡에서는 여전히 "어제"입니다.
.NET Framework에 대한 컨텍스트를 원하는 시간대를 정의하십시오 Instant
.
ZoneId z = ZoneId.of( "America/Montreal" );
적용 ZoneId
을 얻을 ZonedDateTime
.
ZonedDateTime zdt = instant.atZone( z );
LocalDate
시간없이 날짜에만 관심이 있다면 LocalDate
.
LocalDate localDate = zdt.toLocalDate();
표준 ISO 8601 형식 인 YYYY-MM-DD로 문자열을 생성하려면 toString
. java.time 클래스는 문자열을 생성 / 파싱 할 때 기본적으로 표준 형식을 사용합니다.
String output = localDate.toString();
2017-01-23
MM-DD-YYYY 형식을 원하는 경우 형식화 패턴을 정의하십시오.
DateTimeFormatter f = DateTimeFormatter.ofPattern( "MM-dd-uuuu" );
String output = localDate.format( f );
형식화 패턴 코드는 대소 문자를 구분합니다. 질문의 코드 mm
가 MM
(월 )이 아닌 잘못 사용되었습니다 (분 ).
DateTimeFormatter
구문 분석에 동일한 개체를 사용합니다 . java.time 클래스는 스레드로부터 안전하므로이 객체를 유지하고 스레드간에 반복적으로 재사용 할 수 있습니다.
LocalDate localDate = LocalDate.parse( "01-23-2017" , f );
java.time 정보
java.time의 프레임 워크는 나중에 자바 8에 내장되어 있습니다. 이 클래스는 까다로운 기존에 대신 기존 과 같은 날짜 - 시간의 수업을 java.util.Date
, Calendar
, SimpleDateFormat
.
Joda 타임 프로젝트는 지금에 유지 관리 모드 의로 마이그레이션을 조언 java.time의 클래스.
자세한 내용은 Oracle Tutorial을 참조하십시오 . 그리고 많은 예제와 설명을 위해 Stack Overflow를 검색하십시오. 사양은 JSR 310 입니다.
java.time 클래스는 어디서 구할 수 있습니까?
ThreeTen - 추가 프로젝트 추가 클래스와 java.time를 확장합니다. 이 프로젝트는 java.time에 향후 추가 될 수있는 가능성을 입증하는 근거입니다. 당신은 여기에 몇 가지 유용한 클래스와 같은 찾을 수 있습니다 Interval
, YearWeek
, YearQuarter
, 그리고 더 .