Как изменить формат даты в зависимости от страны
У меня есть требование изменить порядок тегов ДД / ММ / ГГГГ в зависимости от страны пользователя.
http://en.wikipedia.org/wiki/Date_format_by_country
Способ, которым я думал сделать это, состоит в том, чтобы создать таблицу Country / Dateformat и в соответствии с выбором страны перемещать поля, используя jquery .
Есть ли способ сделать это в php или даже в js или лучше? Я также искал таблицу страны / даты, а не вставлял все значения вручную, но ничего не смог найти...
3 ответа
Для PHP это должно быть хорошим началом: http://php.net/manual/en/function.setlocale.php
Для JavaScript: отображение даты / времени в формате локали пользователя и смещения времени
В целом, большинство современных языков имеют встроенную поддержку локали. Вы не должны реализовывать это самостоятельно. Это будет утомительно и глючит (локализация сложная).
Если вы используете PHP, то IntlDateFormatter() поможет вам:
$d = new DateTime();
$fmt = new IntlDateFormatter('en-US', IntlDateFormatter::SHORT, IntlDateFormatter::NONE);
echo "US: ".$fmt->format($d)."<br/>";
$fmt = new IntlDateFormatter('en-GB', IntlDateFormatter::SHORT, IntlDateFormatter::NONE);
echo "GB: ".$fmt->format($d)."<br/>";
$fmt = new IntlDateFormatter('en-AU', IntlDateFormatter::SHORT, IntlDateFormatter::NONE);
echo "AU: ".$fmt->format($d)."<br/>";
$fmt = new IntlDateFormatter('de-DE', IntlDateFormatter::SHORT, IntlDateFormatter::NONE);
echo "DE: ".$fmt->format($d)."<br/>";
Выход:
US: 2/1/18
GB: 01/02/2018
AU: 1/2/18
DE: 01.02.18
Если вы хотите изменить формат даты на стороне клиента, вы можете попробовать функцию toLocaleString для объекта Date в JavaScript. ToLocaleString изменит формат в зависимости от настроек клиентской ОС для их расположения. Вам также не нужно иметь таблицу с форматом страны и даты.
Это можно сделать без необходимости использования jQuery или какого-либо дополнительного плагина.