날짜 문자열을 날짜 또는 달력 개체로 변환하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/43802

  •  09-06-2019
  •  | 
  •  

문제

나는 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 자세한 내용은.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top