SimpleDateFormat 클래스에서 사용할 수있는 날짜 형식은 무엇입니까?


83

누구든지 SimpleDateFormat 클래스에서 사용 가능한 날짜 형식에 대해 알려줄 수 있습니까?

나는 API를 통해 만족스러운 답변을 찾지 못했습니다. 어떤 도움이라도 대단히 감사합니다.


3
어떤 형식을 추구합니까? 필요한 요소로 구성된 형식 을 구축 해야합니다.
데이비드 그랜트

3
API가 허용하는 모든 형식을 구성 할 수 있습니다. 명확한 목록이 없습니다.
Peter Lawrey 2012 년

답변:


138

날짜 및 시간 형식은 아래에 잘 설명되어 있습니다.

SimpleDateFormat (Java Platform SE 7)-날짜 및 시간 패턴

n만들 수있는 형식의 수가 있을 수 있습니다 . 예- dd/MM/yyyy또는 YYYY-'W'ww-u필요한 패턴을 얻기 위해 문자를 혼합하고 일치시킬 수 있습니다. 패턴 문자는 다음과 같습니다.

  • G -시대 지정자 (AD)
  • y -연도 (1996; 96)
  • Y -주 연도 (2009, 09)
  • M -연도 (7 월, 7 월, 07 일)
  • w -연중 주 (27)
  • W -월의 주 (2)
  • D -연중 일 (189)
  • d -일 (10)
  • F -월의 요일 (2)
  • E -요일 이름 (화요일, 화요일)
  • u -요일 번호 (1 = 월요일, ..., 7 = 일요일)
  • a -AM / PM 마커
  • H -하루 중 시간 (0-23)
  • k -하루 중 시간 (1-24)
  • K -오전 / 오후 시간 (0-11)
  • h -오전 / 오후 시간 (1-12)
  • m -분 (30)
  • s -초 (55)
  • S -밀리 초 (978)
  • z -일반 시간대 (태평양 표준시, PST, GMT-08 : 00)
  • Z -RFC 822 시간대 (-0800)
  • X -ISO 8601 시간대 (-08, -0800, -08 : 00)

구문 분석하려면 :

2000-01-23T04 : 56 : 07.000 + 0000

사용하다: new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");


감사합니다 Quoi ..하지만 날짜를 EST, IST, gdt, gmt 등과 같은 다른 표준으로 어떻게 변환 할 수 있는지 알려주시겠습니까?
Abhishek_Mishra

1
그런 다음 다른 로케일의 날짜를 찾고 있습니다. SimpleDateFormat생성자에서 로케일을 설정할 수 있습니다. SimpleDateFormat formatter = new SimpleDateFormat(pattern, locale);
Subhrajyoti Majumder

OK 그게 뭔가 내가 for..Thanks quoi를보고 있었다 .. :)
Abhishek_Mishra

당신의 개방성에 감사드립니다. :)
Subhrajyoti Majumder

Z와 'Z'를 혼동하지 마십시오. 나는 바보 였고 다른 사람이 나처럼되지 않기를 바랍니다.
Tiefan Ju

52

http://www3.ntu.edu.sg/home/ehchua/programming/java/DateTimeCalendar.html 에서 얻은 몇 가지 예제 코드를 던져 보겠습니다 . 그런 다음 이해할 때까지 다양한 옵션을 사용해 볼 수 있습니다.

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTest {
   public static void main(String[] args) {
       Date now = new Date();

       //This is just Date's toString method and doesn't involve SimpleDateFormat
       System.out.println("toString(): " + now);  // dow mon dd hh:mm:ss zzz yyyy
       //Shows  "Mon Oct 08 08:17:06 EDT 2012"

       SimpleDateFormat dateFormatter = new SimpleDateFormat("E, y-M-d 'at' h:m:s a z");
       System.out.println("Format 1:   " + dateFormatter.format(now));
       // Shows  "Mon, 2012-10-8 at 8:17:6 AM EDT"

       dateFormatter = new SimpleDateFormat("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
       System.out.println("Format 2:   " + dateFormatter.format(now));
       // Shows  "Mon 2012.10.08 at 08:17:06 AM EDT"

       dateFormatter = new SimpleDateFormat("EEEE, MMMM d, yyyy");
       System.out.println("Format 3:   " + dateFormatter.format(now));
       // Shows  "Monday, October 8, 2012"

       // SimpleDateFormat can be used to control the date/time display format:
       //   E (day of week): 3E or fewer (in text xxx), >3E (in full text)
       //   M (month): M (in number), MM (in number with leading zero)
       //              3M: (in text xxx), >3M: (in full text full)
       //   h (hour): h, hh (with leading zero)
       //   m (minute)
       //   s (second)
       //   a (AM/PM)
       //   H (hour in 0 to 23)
       //   z (time zone)
       //  (there may be more listed under the API - I didn't check)

   }

}

행운을 빕니다!


6

java.time

최신 정보

다른 질문은 구식입니다. 이러한 끔찍한 레거시 클래스 SimpleDateFormat는 수년 전에 현대 java.time 클래스 로 대체되었습니다 .

커스텀

사용자 지정 서식 패턴을 정의하기 위해의 코드는의 코드 DateTimeFormatter와 유사하지만 정확히 동일하지는 않습니다 SimpleDateFormat. 문서를 반드시 공부하십시오. 그리고 많은 예제를 위해 Stack Overflow를 검색하십시오.

DateTimeFormatter f = 
    DateTimeFormatter.ofPattern( 
        "dd MMM uuuu" , 
        Locale.ITALY 
    ) 
;

표준 ISO 8601

ISO 8601 날짜 - 시간 값의 여러 유형에 대한 표준을 정의 형식을 지원합니다. 이러한 형식은 데이터 교환을 위해 설계되었으며, 기계로 쉽게 구문 분석 할 수있을뿐만 아니라 문화 전반에 걸쳐 사람이 쉽게 읽을 수 있습니다.

java.time의 문자열을 구문 분석 / 생성 할 때 클래스는 기본적으로 ISO 8601 형식을 사용합니다. toString& parse메소드를 호출하기 만하면 됩니다. 형식화 패턴을 지정할 필요가 없습니다.

Instant.now().toString()

2018-11-05T18 : 19 : 33.017554Z

UTC 값의 Z경우 끝에는 UTC를 의미하며 "Zulu"로 발음됩니다.

현지화

형식화 패턴을 지정하는 대신 java.time이 자동으로 현지화 되도록 할 수 있습니다. DateTimeFormatter.ofLocalized…방법을 사용하십시오 .

특정 지역 (시간대)의 사람들이 사용하는 벽시계 시간으로 현재 순간을 가져옵니다.

ZoneId z = ZoneId.of( "Africa/Tunis" );
ZonedDateTime zdt = ZonedDateTime.now( z );

표준 ISO 8601 형식으로 텍스트를 현명하게 확장하여 대괄호로 묶인 시간대 이름을 추가합니다.

zdt.toString () : 2018-11-05T19 : 20 : 23.765293 + 01 : 00 [아프리카 / 튀니지]

자동 현지화 된 텍스트를 생성합니다.

Locale locale = Locale.CANADA_FRENCH;
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL ).withLocale( locale );

String output = zdt.format( f );

출력 : lundi 5 novembre 2018 à 19:20:23 heure normale d' Europe centrale

일반적으로 하드 코딩 된 서식 패턴을 사용하는 것보다 자동 현지화하는 것이 더 좋습니다.


java.time 정보

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

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

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

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

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


5

http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html 에서 형식을 확인 하십시오.

본관

System.out.println("date  : " + new classname().getMyDate("2014-01-09 14:06", "dd-MMM-yyyy E hh:mm a z", "yyyy-MM-dd HH:mm"));

방법

 public String getMyDate(String myDate, String returnFormat, String myFormat)
            {
                DateFormat dateFormat = new SimpleDateFormat(returnFormat);
                Date date=null;
                String returnValue="";
                try {
                    date = new SimpleDateFormat(myFormat, Locale.ENGLISH).parse(myDate);
                    returnValue = dateFormat.format(date);
                } catch (ParseException e) {
                    returnValue= myDate;
                    System.out.println("failed");
                    e.printStackTrace();
                }

            return returnValue;
            }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.