Формат даты Java - включая дополнительные символы

Да, это позволяет что-то случиться. В примечании приводятся только примеры. Определение довольно ясно:

Неопределенное поведение: поведение, для которого настоящий международный стандарт не предъявляет требований.

75
задан Sejanus 26 January 2010 в 07:50
поделиться

4 ответа

Конечно, с помощью SimPledateFormat Вы можете включить литеральные строки:

в пределах строк даты и времени, беспрепятственные буквы от «a 'in' z» и от «a 'до' z» Интерпретируется как буквы шаблонов, представляющих компоненты даты или строки времени. Текст может быть указан, используя отдельные цитаты ('), чтобы избежать интерпретации. «« »представляет собой одну цитату. Все остальные персонажи не интерпретируются; Они просто скопированы в выходную строку во время форматирования или сопоставления против входной строки во время анализа.

 "hh 'o''clock' a, zzzz"    12 o'clock PM, Pacific Daylight Time
142
ответ дан 24 November 2019 в 11:35
поделиться

Mark Jeronimus java.time

уже сказал это . Я пробуждаю кровожадные инстинкты у него немного больше. Просто поместите текст, который будет распечатан буквально в одинарных кавычках.

    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

, Если Вы используете DateTimeFormatterBuilder и appendPattern метод, используйте одинарные кавычки таким же образом. Или используйте appendLiteral метод вместо этого и никакие одинарные кавычки.

, Как мы помещаем одинарную кавычку в формат, тогда? Две одинарных кавычки производят тот. Это doesn’t имеют значение, является ли двойная одинарная кавычка внутренними одинарными кавычками или нет:

    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));

02-часовой AM, Тихоокеанское летнее время

Все средства форматирования выше могут использоваться для парсинга также. Например:

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

16:43:56

SimpleDateFormat класс, используемый, когда этот вопрос задали почти 10 лет назад, известно неприятен и длинный устаревший. Я рекомендую вместо этого использовать java.time, современный API даты и времени Java. Который является, почему я демонстрирую просто это.

Ссылки

1
ответ дан 24 November 2019 в 11:35
поделиться

java.text.simpledateformat

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

Вы получите подробнее Текст ссылки

-4
ответ дан 24 November 2019 в 11:35
поделиться

Вы можете использовать String.format, как документально документировано в java.util.formatter :

Calendar c = ...;
String s = String.format("%tY year", c);
// -> s == "2010 year" or whatever the year actually is
7
ответ дан 24 November 2019 в 11:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: