Java 날짜 형식-추가 문자 포함


87

Java에서 php date () 스타일 형식에 해당하는 것이 있습니까? 내 말은, PHP에서는 문자를 문자 그대로 처리하도록 백 슬래시 이스케이프 문자를 사용할 수 있습니다. 즉 yyyy \ y \ e \ a \ r2010 년이 됩니다. Java에서 비슷한 것을 찾지 못했습니다. 모든 예제는 기본 제공 날짜 형식 만 처리합니다.

특히 JCalendar 날짜 선택기와 해당 dateFormatString 속성을 다룹니다 .

내 로케일에서는 d와 같은 날짜 형식으로 모든 종류의 추가 항목을 작성해야하기 때문에 필요합니다. (일 동안) 일 후 부분, m. (몇 년 동안) 몇 년 후에 부분 등등. 최악의 경우 문자열 바꾸기 또는 정규식을 사용할 수 있지만 더 간단한 방법이 있습니까? 미리 감사드립니다!


1
2019 년 이후에이 글을 읽는 사람에게는 SimpleDateFormat몇 가지 답변에 사용 된 수업이 매우 번거롭고 오래되었습니다. 그것을 피하십시오. 대신 최신 Java 날짜 및 시간 APIjava.time 사용을 보여주는 Mark Jeronimus의 짧은 답변을 사용 하십시오 .
Ole VV

답변:


164

물론 SimpleDateFormat을 사용 하면 리터럴 문자열을 포함 할 수 있습니다.

날짜 및 시간 패턴 문자열 내에서 'A'에서 'Z'까지, 'a'에서 'z'까지 인용되지 않은 문자는 날짜 또는 시간 문자열의 구성 요소를 나타내는 패턴 문자로 해석됩니다. 해석을 피하기 위해 작은 따옴표 ( ')를 사용하여 텍스트를 인용 할 수 있습니다. " ''"는 작은 따옴표를 나타냅니다. 다른 모든 문자는 해석되지 않습니다. 형식화 중에 출력 문자열에 복사되거나 구문 분석 중에 입력 문자열과 일치됩니다.

 "hh 'o''clock' a, zzzz"    12 o'clock PM, Pacific Daylight Time

슈퍼, 그게 바로 내가 필요한 것입니다. 놀랍게도 웹에서 검색 한 수많은 예제에서 그런 간단한 것을 찾지 못했습니다. :) 감사합니다!
Sejanus 2010-01-26

1
따옴표 문자를 어떻게 이스케이프합니까? mm '형식으로 뭔가를 시도하고 있습니다. 예를 들어 46 분처럼 46 분을 ​​나타냅니다.
Sotti

3
@Sotti : 46''. 첫 번째는 두 번째를 탈출합니다.
Thilo 2014 년

1
참고로, 같은 몹시 귀찮은 날짜 - 시간 수업 java.util.Date, java.util.Calendar그리고 java.text.SimpleDateFormat지금 기존 에 의해 대체, java.time의 나중에 자바 8에 내장 된 클래스.
Basil Bourque



4

java.time

Mark Jeronimus는 이미 그것을 말했습니다 . 나는 그것을 조금 더 살육하고 있습니다. 문자 그대로 작은 따옴표 안에 인쇄 할 텍스트를 넣으십시오.

    DateTimeFormatter yearFormatter = DateTimeFormatter.ofPattern("yyyy 'year'");
    System.out.println(LocalDate.of(2010, Month.FEBRUARY, 3).format(yearFormatter));
    System.out.println(Year.of(2010).format(yearFormatter));
    System.out.println(ZonedDateTime.now(ZoneId.of("Europe/Vilnius")).format(yearFormatter));

방금 실행할 때 출력 :

2010 year
2010 year
2019 year

a DateTimeFormatterBuilder및 해당 appendPattern방법을 사용하는 경우 동일한 방식으로 작은 따옴표를 사용하십시오. 또는 그 appendLiteral방법을 대신 사용하고 작은 따옴표를 사용 하지 마십시오 .

그러면 형식에 작은 따옴표를 어떻게 넣을까요? 두 개의 작은 따옴표가 하나를 생성합니다. 큰 따옴표가 작은 따옴표 안에 있는지 여부는 중요하지 않습니다.

    DateTimeFormatter formatterWithSingleQuote = DateTimeFormatter.ofPattern("H mm'' ss\"");
    System.out.println(LocalTime.now(ZoneId.of("Europe/London")).format(formatterWithSingleQuote));

10 28 '34 "

    DateTimeFormatter formatterWithSingleQuoteInsideSingleQuotes
            = DateTimeFormatter.ofPattern("hh 'o''clock' a, zzzz", Locale.ENGLISH);
    System.out.println(ZonedDateTime.now(ZoneId.of("America/Los_Angeles"))
            .format(formatterWithSingleQuoteInsideSingleQuotes));

오전 2시, 태평양 일광 절약 시간

위의 모든 포맷터는 구문 분석에도 사용할 수 있습니다. 예를 들면 :

    LocalTime time = LocalTime.parse("16 43' 56\"", formatterWithSingleQuote);
    System.out.println(time);

16:43:56

SimpleDateFormat거의 10 년 전에이 질문을했을 때 사용 된 수업은 매우 번거롭고 오래되었습니다. 대신 최신 Java 날짜 및 시간 API 인 java.time을 사용하는 것이 좋습니다. 그것이 내가 그것을 증명하는 이유입니다.

연결


-4

java.text.SimpleDateFormat

SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd"); 
String formattedDate = formatter.format(date);

여기에서 더 많은 정보를 얻을 수 있습니다. 링크 텍스트

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