날짜 문자열을 날짜 또는 달력 개체로 변환하는 방법은 무엇입니까?
문제
나는 String
생성해야 하는 날짜 표현 Date
또는 Calendar
개체에서.나는 살펴보았다 Date
그리고 Calendar
API를 사용했지만 나만의 추악한 구문 분석 방법을 만드는 것 외에는 이를 수행할 수 있는 방법을 찾지 못했습니다.분명 방법이 있을 거라 생각하는데, 해결책을 아는 사람이 있나요?
해결책
간단히 말해서:
DateFormat formatter = new SimpleDateFormat("MM/dd/yy");
try {
Date date = formatter.parse("01/29/02");
} catch (ParseException e) {
e.printStackTrace();
}
보다 SimpleDateFormat
javadoc 이상.
그리고 그것을 Calendar
, 하다:
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
다른 팁
tl;dr
LocalDate.parse( "2015-01-02" )
java.time
Java 8 이상에는 새로운 기능이 있습니다. java.time 이러한 다른 답변을 구식으로 만드는 프레임워크입니다.이 프레임워크는 다음에서 영감을 받았습니다. 조다타임, 에 의해 정의됨 JSR 310, 그리고 다음에 의해 확장됩니다. 쓰리텐-엑스트라 프로젝트.참조 지도 시간.
기존 번들 클래스인 java.util.Date/.Calendar는 문제가 많고 혼란스럽기로 악명이 높습니다.그들을 피하세요.
LocalDate
Joda-Time과 마찬가지로 java.time에도 클래스가 있습니다. LocalDate
시간과 시간대가 없는 날짜 전용 값을 나타냅니다.
ISO 8601
입력 문자열이 표준에 있는 경우 ISO 8601 형식 yyyy-MM-dd
, 포맷터를 지정할 필요 없이 해당 클래스에 문자열을 직접 구문 분석하도록 요청할 수 있습니다.
ISO 8601 형식은 날짜-시간 값의 문자열 표현을 구문 분석하고 생성하기 위해 기본적으로 java.time에서 사용됩니다.
LocalDate localDate = LocalDate.parse( "2015-01-02" );
포맷터
다른 형식이 있는 경우 다음에서 포맷터를 지정하세요. java.time.format 패키지.자신만의 형식 지정 패턴을 지정하거나 java.time이 자동으로 적절하게 현지화되도록 할 수 있습니다. Locale
마침표 대 쉼표와 같은 문제를 결정하기 위한 번역 및 문화적 규범을 위한 인간 언어를 지정합니다.
서식 패턴
읽기 DateTimeFormatter
형식 패턴에 사용되는 코드에 대한 자세한 내용은 클래스 문서를 참조하세요.오래된 구식과는 조금 다르지만 java.text.SimpleDateFormat
수업 패턴.
두 번째 논증이 어떻게 되는지 주목하세요. parse
방법은 메소드 참조, Java 8 이상에 구문이 추가되었습니다.
String input = "January 2, 2015";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ( "MMMM d, yyyy" , Locale.US );
LocalDate localDate = LocalDate.parse ( input , formatter );
콘솔에 덤프합니다.
System.out.println ( "localDate: " + localDate );
현지 날짜:2015-01-02
자동으로 현지화
또는 형식 지정 패턴을 지정하는 대신 java.time을 현지화하도록 하세요.부르다 DateTimeFormatter.ofLocalizedDate
, 원하는/예상 사항을 지정해야 합니다. Locale
런타임 중 언제든지 변경될 수 있는 JVM의 현재 기본값에 의존하는 대신(!)
String input = "January 2, 2015";
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDate ( FormatStyle.LONG );
formatter = formatter.withLocale ( Locale.US );
LocalDate localDate = LocalDate.parse ( input , formatter );
콘솔에 덤프합니다.
System.out.println ( "input: " + input + " | localDate: " + localDate );
입력:2015 년 1 월 2 일 | LocalDate :2015-01-02
그만큼 높이 평가되는 Joda 시간 라이브러리 또한 볼만한 가치가 있습니다.이것이 새로운 기반이 된다. 날짜 및 시간 API Java 7에 대해 연필로 작성되었습니다.디자인이 깔끔하고 직관적이며, 잘 기록 된 원본의 서투른 부분을 많이 피합니다. java.util.Date
/ java.util.Calendar
클래스.
조다의 DateFormatter
문자열을 Joda로 구문 분석할 수 있습니다. DateTime
.
이 시도:
DateFormat.parse(String)
그만큼 DateFormat
수업에는 parse
방법.
보다 http://java.sun.com/j2se/1.4.2/docs/api/java/text/DateFormat.html 자세한 내용은.