Spec-Zone .ru
спецификации, руководства, описания, API
|
Предыдущий раздел, Используя Предопределенные Форматы, описал стили форматирования, обеспеченные DateFormat
class. В большинстве случаев эти предопределенные форматы соответствуют. Однако, если Вы хотите создать свои собственные специализированные форматы, можно использовать SimpleDateFormat
class.
Примеры кода, которые следуют, демонстрируют методы SimpleDateFormat
class. Можно счесть полный исходный код для примеров в файле названным SimpleDateFormatDemo
.
Когда Вы создаете a SimpleDateFormat
объект, Вы определяете образец String
. Содержание образца String
определите формат даты и время. Для полного описания синтаксиса образца см. таблицы в Синтаксисе Образца Формата Даты.
Следующий код форматирует дату и время согласно образцу String
переданный к SimpleDateFormat
конструктор. String
возвращенный format
метод содержит отформатированную дату и время, которые должны быть выведены на экран.
Date today; String output; SimpleDateFormat formatter; formatter = new SimpleDateFormat(pattern, currentLocale); today = new Date(); output = formatter.format(today); System.out.println(pattern + " " + output);
Следующая таблица показывает вывод, сгенерированный предыдущим примером кода когда США. Locale
определяется:
Образец | Вывод |
---|---|
dd. MM.yy | 30.06.09 |
yyyy. Г MM.dd 'в' hh:mm:ss z | 30.06.2009 AD в 8:29:36 PDT |
EEE, MMM d, ''yy | Вторник, 30 июня, '09 |
h:mm a | 20:29 |
H:mm | 8:29 |
H:mm:ss:SSS | 8:28:36:249 |
K:mm a, z | 8:29, PDT |
yyyy. MMMMM.dd GGG hh:mm aaa | 2009. 8:29 AD в июне 30 |
SimpleDateFormat
class чувствителен к локали. Если Вы инстанцируете SimpleDateFormat
без a Locale
параметр, это отформатирует дату и время согласно значению по умолчанию Locale
. И образец и Locale
определите формат. Для того же самого образца, SimpleDateFormat
может отформатировать дату и время по-другому если Locale
изменяется.
В примере кода, который следует, образец является hardcoded в операторе, который создает SimpleDateFormat
объект:
Date today; String result; SimpleDateFormat formatter; formatter = new SimpleDateFormat("EEE d MMM yy", currentLocale); today = new Date(); result = formatter.format(today); System.out.println("Locale: " + currentLocale.toString()); System.out.println("Result: " + result);
Когда currentLocale
устанавливается в различные значения, предыдущий пример кода генерирует этот вывод:
Locale: fr_FR Result: mar. 30 juin 09 Locale: de_DE Result: Di 30 Jun 09 Locale: en_US Result: Tue 30 Jun 09
Можно разработать свои собственные образцы формата для дат и времена от списка символов в следующей таблице:
Символ | Значение | Представление | Пример |
---|---|---|---|
Г | указатель эры | Текст | AD |
y | год | Число | 2009 |
М. | месяц в году | Текст & Число | Июль & 07 |
d | день в месяце | Число | 10 |
h | час в/пополудни (1-12) | Число | 12 |
H | час в день (0-23) | Число | 0 |
м. | минута в час | Число | 30 |
s | второй в минуту | Число | 55 |
S | миллисекунда | Число | 978 |
E | день на неделе | Текст | Во вторник |
D | день в году | Число | 189 |
F | день недели в месяце | Число | 2 (2-ой Wed в июле) |
w | неделя в году | Число | 27 |
W | неделя в месяце | Число | 2 |
a | /пополудни маркер | Текст | PM |
k | час в день (1-24) | Число | 24 |
K | час в/пополудни (0-11) | Число | 0 |
z | часовой пояс | Текст | Тихоокеанское время |
' | escape для текста | Разделитель | (ни один) |
' | одинарная кавычка | Литерал | ' |
Символы, которые не являются буквами, обрабатываются как заключенный в кавычки текст. Таким образом, они появятся в отформатированном тексте, даже если они не будут включены в пределах одинарных кавычек.
Число букв символа, которые Вы определяете также, определяет формат. Например, если "zz" результаты образца в "PDT", то "zzzz" образец генерирует "Тихоокеанское Летнее время." Следующая таблица суммирует эти правила:
Представление | Число Символов | Результат |
---|---|---|
Текст | 1 - 3 | сокращенная форма, если Вы существуете |
Текст | >= 4 | полная форма |
Число | минимальное число цифр требуется | более короткие числа дополняются нулями (в течение года, если количество 'y' 2, то год является усеченным к 2 цифрам), |
Текст & Число | 1 - 2 | форма числа |
Текст & Число | 3 | текстовая форма |