Как изменить формат даты в зависимости от страны

У меня есть требование изменить порядок тегов ДД / ММ / ГГГГ в зависимости от страны пользователя.

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 или какого-либо дополнительного плагина.

Другие вопросы по тегам