Формат дат в Javascript

В очередной раз борясь с несоответствием форматов дат на клиенте и сервере, у элементов календаря и хранении в БД решил для себя составить маленькую памятку и придти к общему знаменателю.

Наименование Формат Пример
ISO 8601 YYYY-MM-DD YYYY-MM-DDTHH:mm:ss.sssZ 2016-05-26
Long MMM DD YYYY DD MMM YYYY Mar 25 2015 25 Mar 2015
Short MM/DD/YYYY 03/25/2015
Full text string DDD MMM DD YYYY HH:mm:ss zzz Wed Mar 25 2015 09:56:24 GMT+0100 (W. Europe Standard Time)

Формат ISO 8601

Основная идея формата- порядок, в котором значения даты и времени расположены от более значимого к менее значимому. Каждое число (год, месяц, день, время) записывается с фиксированным числом знаков и, при необходимости, дополняется до него ведущими нулями.

Стандарт разрешает использовать дефис для разделения элементов даты, а двоеточия для разделения времени.

Менее значимую часть можно отбрасывать, при этом соблюдая порядок значимости и фиксированное число знаков для выражения той или иной части (2016-05 является корректной датой, означающей май 2016).

Если время указано в формате UTC, то в самом конце добавляется Z без пробела.

Для отделения даты от времени (а так же, аналогично Z, для указания на формат UTC) используется символ T.

Формат Long date

Основная идея формата- порядок, в котором значения года, месяца и даты размещены не имеют значения (доступны 27 May 2016 и 2016 May 27).

Значение года может содержать как 2, так и 4 цифры.

Имена месяцев и дней (например May или Friday) должны содержать не менее двух знаков (в случае не уникальности двузначных имён, они преобразуются в последнее из соответствующих Ju -> July). Если имя дня недели противоречит полученному алгоритмом, то оно игнорируется в пользу правильного.

Формат Short date

Строгий формат даты, допускающий вид месяц/день/год, а в качестве разделителя могут использоваться символы “/” и “-” (при этом в Chrome разделители игнорируются и даты вида ‘05-27.2016’, ‘05?27*2016’ вполне себе являются корректными).

Формат full text string

Формат даты и времени, поддерживающий указание часовых поясов и смещение.

Written on May 27, 2016