Development Tip

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

yourdevel 2020. 10. 18. 19:41
반응형

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


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

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

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


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

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

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

완성도를 위해 Java 8은 다음 DateTimeFormatter을 지원합니다.

DateTimeFormatter.ofPattern("yyyy 'year'");

java.util.Formatter에 설명 된대로 String.format을 사용할 수 있습니다 .

Calendar c = ...;
String s = String.format("%tY year", c);
// -> s == "2010 year" or whatever the year actually is

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

The SimpleDateFormat class used when this question was asked nearly 10 years ago is notoriously troublesome and long outdated. I recommend that instead you use java.time, the modern Java date and time API. Which is why I demonstrate just that.

Links


java.text.SimpleDateFormat

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

You'll get more info here link text

참고URL : https://stackoverflow.com/questions/2138085/java-date-format-including-additional-characters

반응형