You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
В рамках задачи по интернационализации DatePiker'а, существует требование по изменению порядка отображения компонентов даты (дд-мм-гггг/гггг-мм-дд и т.п.).
Изначально предполагалось, что преобразование даты будет осуществляться через функцию вида:
format: (date: DateObject)=>string
Также, текущая реализация датапикера обходится без Moment.js, что позволяет не раздувать бандл (>120KB). И это хотелось сохранить.
После исследования темы о форматах отображения дат в различных странах, было найдено альтернативное решение.
Подробности ниже.
Компоненты даты
Для всех стран дата состоит из 3-х компонентов:
Y – год
M – месяц
D – день
Форматы ввода/вывода компонентов даты
Дата будет отображаться и редактироваться в одном поле.
Для упрощения, все существующие форматы можно сократить до одного варианта для каждого компонента:
компонент
формат
ввод/вывод
D
dd
01 — 31
M
mm
01 — 12
Y
yyyy
0001 — 9999
Порядок компонентов даты
Можно ограничиться 3-мя самыми распространёнными в мире комбинациями.
Список в порядке убывания популярности:
№
комбинация (порядок)
допустимый формат
порядок байтов
примечание
1
DMY
dd.mm.yyyy
L – little-endian
2
YMD
yyyy.mm.dd
B – big-endian
Всего 6 стран используют только этот порядок, но 2-е место за счёт КНР
3
MDY
mm.dd.yyyy
M – middle-endian
Резделители
Т.к. в строке будут только компоненты D/M/Y, то стоит запретить использование разных разделителей в одном поле ввода/вывода.
Допустимые разделители также можно ограничить следующим списком:
/ – слэш
. – точка
- – тире/дефис
– пробел
Вывод
Настройку формата ввода/вывода даты можно свести к следующим параметрам.
Формат ввода/вывода дат
В рамках задачи по интернационализации
DatePiker
'а, существует требование по изменению порядка отображения компонентов даты (дд-мм-гггг
/гггг-мм-дд
и т.п.).Изначально предполагалось, что преобразование даты будет осуществляться через функцию вида:
Также, текущая реализация датапикера обходится без
Moment.js
, что позволяет не раздувать бандл (>120KB
). И это хотелось сохранить.После исследования темы о форматах отображения дат в различных странах, было найдено альтернативное решение.
Подробности ниже.
Компоненты даты
Для всех стран дата состоит из 3-х компонентов:
Y
– годM
– месяцD
– деньФорматы ввода/вывода компонентов даты
Дата будет отображаться и редактироваться в одном поле.
Для упрощения, все существующие форматы можно сократить до одного варианта для каждого компонента:
D
dd
01 — 31
M
mm
01 — 12
Y
yyyy
0001 — 9999
Порядок компонентов даты
Можно ограничиться 3-мя самыми распространёнными в мире комбинациями.
Список в порядке убывания популярности:
DMY
dd.mm.yyyy
YMD
yyyy.mm.dd
MDY
mm.dd.yyyy
Резделители
Т.к. в строке будут только компоненты D/M/Y, то стоит запретить использование разных разделителей в одном поле ввода/вывода.
Допустимые разделители также можно ограничить следующим списком:
/
– слэш.
– точка-
– тире/дефисВывод
Настройку формата ввода/вывода даты можно свести к следующим параметрам.
Основной источник - wiki/Date_format_by_country
The text was updated successfully, but these errors were encountered: