понедельник, 18 мая 2015 г.

Java Date Format

Java Date Format

Просто справочный пост про форматы дат.
Конструктор по умолчанию использует паттерн времени и формат символов по умолчанию для текущей локализации. То есть, для русской локализации стандартным паттерном времени является паттерн "dd.MM.yy HH:mm".
Конструктор SimpleDateFormat(String pattern) принимает паттерн даты, в котором будет отдавать результат метод format(). В примере мы использовали паттерн "dd MMMM", который требует от format() вывести дату в следующем формате: "две цифры дня месяца" + "пробел" + "название месяца". В данном случае используется название месяца по умолчанию для текущей локализации, т.е., "Февраль".
Конструктор SimpleDateFormat("dd MMMM", myDateFormatSymbols ) аналогичен предыдущему за исключением того, что название месяца используется не по умолчанию, а те, которые возвращает переменная myDateFormatSymbols. В свою очередь, в переменной myDateFormatSymbols мы переопределили метод getMonths() чтобы он возвращал названия месяцев с прописной буквы и в родительном падеже.
Конструктор SimpleDateFormat("dd MMMM", Locale.ENGLISH) аналогичен конструктору SimpleDateFormat(String pattern), но использует заданную локализацию. В нашем случае это английская локализация Locale.ENGLISH.
Рассмотрим подробно параметры, принимаемые классом SimpleDateFormat в качестве паттерна даты.
СимволЧто означаетПример
Gэра (в английской локализации - AD и BC)н.э.
yгод (4-х значное число)2012
yyгод (последние 2 цифры)12
yyyyгод (4-х значное число)2012
Mномер месяца без лидирующих нулей2
MMномер месяца (с лидирующими нулями если номер месяца < 10)02
MMMчетырех буквенное сокращение месяца в русской локализации и трех буквенное - в английской (Feb)фев
MMMMполное название месяца (в английской локализации - February)Февраль
wнеделя в году без лидирующих нулей7
wwнеделя в году с лидирующими нулями07
Wнеделя в месяце без лидирующих нулей2
WWнеделя в месяце с лидирующим нулем (если это необходимо)02
Dдень в году38
dдень месяца без лидирующих нулей7
ddдень месяца с лидирующими нулями07
Fдень недели в месяце без лидирующих нулей1
FFдень недели в месяце с лидирующими нулями01
Eдень недели (сокращение)Вт
EEEEдень недели (полностью)вторник
aAM/PM указательAM
Hчасы в 24-часовом формате без лидирующих нулей6
HHчасы в 24-часовом формате с лидирующим нулем06
kколичество часов в 24-часовом формате18
Kколичество часов в 12-часовом формате6
hвремя в 12-часовом формате без лидирующих нулей6
hhвремя в 12-часовом формате с лидирующим нулем06
mминуты без лидирующих нулей32
mmминуты с лидирующим нулем32
sсекунды без лидирующих нулей11
ssсекунды с лидирующим нулем11
Sмиллисекунды109
zчасовой поясEET
Zчасовой пояс в формате RFC 822+0200
'символ экранирования для текста'Date='
''кавычка'o''clock'
Рассмотрим несколько примеров паттернов даты и времени, которые представлены в официальной документации. Русская локализация:
Паттерн даты и времениРезультат
"e;yyyy.MM.dd G 'at' HH:mm:ss z"e;2012.02.07 н.э. at 16:51:35 EET
"e;EEE, MMM d, ''yy"e;Вт, фев 7, '12
"e;h:mm a"e;4:51 PM
"e;hh 'o''clock' a, zzzz"e;04 o'clock PM, Eastern European Time
"e;K:mm a, z"e;4:51 PM, EET
"e;yyyyy.MMMMM.dd GGG hh:mm aaa"e;02012.Февраль.07 н.э. 04:51 PM
"e;EEE, d MMM yyyy HH:mm:ss Z"e;Вт, 7 фев 2012 16:51:35 +0200
"e;yyMMddHHmmssZ"e;120207165135+0200
Английская локализация:
Паттерн даты и времениРезультат
"e;yyyy.MM.dd G 'at' HH:mm:ss z"e;2012.02.07 AD at 16:55:57 EET
"e;EEE, MMM d, ''yy"e;Tue, Feb 7, '12
"e;h:mm a"e;4:55 PM
"e;hh 'o''clock' a, zzzz"e;04 o'clock PM, Eastern European Time
"e;K:mm a, z"e;4:55 PM, EET
"e;yyyyy.MMMMM.dd GGG hh:mm aaa"e;02012.February.07 AD 04:55 PM
"e;EEE, d MMM yyyy HH:mm:ss Z"e;Tue, 7 Feb 2012 16:55:57 +0200
"e;yyMMddHHmmssZ"e;120207165557+0200