Intereting Posts

Получить формат даты в соответствии с языком в PHP

Существует очень простая проблема. У меня есть идентификатор локали, en, en_US, cs_CZ или что-то еще. Мне просто нужно получить формат даты и времени для этой локали. Я знаю, что я могу легко форматировать любую временную метку или объект даты в соответствии с локалью. Но мне нужно просто строковое представление формата даты , скажем, регулярное выражение. Есть ли функция, управляющая этой функциональностью? Я пока не нашел …

Exapmle:

$locale = "en_US"; $format = the_function_i_need($locale); echo $format; // prints something like "month/day/year, hour:minute" 

преобразован из комментария:

вам нужно будет построить массив со списком возможностей.

http://en.wikipedia.org/wiki/Date_format_by_country должно помочь.

после выполнения функции, я уверен, что это будет полезно для других

Я тоже пытаюсь сделать то же самое. Вместо того, чтобы создавать массив из всех стран, как насчет использования регулярного выражения для определения формата?

 setlocale(LC_TIME, "us_US"); // returns 'mdy' $type1 = getDateFormat(); setlocale(LC_TIME, "fi_FI"); // returns 'dmy' $type2 = getDateFormat(); setlocale(LC_TIME, "hu_HU"); // returns 'ymd' $type3 = getDateFormat(); /** * @return string */ function getDateFormat() { $patterns = array( '/11\D21\D(1999|99)/', '/21\D11\D(1999|99)/', '/(1999|99)\D11\D21/', ); $replacements = array('mdy', 'dmy', 'ymd'); $date = new \DateTime(); $date->setDate(1999, 11, 21); return preg_replace($patterns, $replacements, strftime('%x', $date->getTimestamp())); } 
 function getDateFormat($locale) { $formatter = new IntlDateFormatter($locale, IntlDateFormatter::SHORT, IntlDateFormatter::NONE); if ($formatter === null) throw new InvalidConfigException(intl_get_error_message()); return $formatter->getPattern(); } 

Сделайте так, чтобы вы установили intl .

Используйте strftime() в сочетании с setlocale() . Похоже, это то, что вы ищете.