How do I get locale day and month?

柔情痞子 提交于 2019-12-22 08:26:15

问题


I'm using the following function to retrieve date and time:

  function formatEventTime($time, $type, $locale = 'nb_NO') {
    setlocale(LC_TIME, $locale);

    switch($type) {
      case 'date' :             $format = '%d.%m'; break;
      case 'dm'   :             $format = '%d. %B'; break;
      case 'time' :             $format = '%H:%M'; break;
      case 'dmy'  :         $format = '%d.%m.%Y'; break;
    }
    return strftime($format, strtotime($time));
  }

wher $time = 2010-12-03 10:00:00. The problem is that my days and months are still in English. How do I change this to e.g. Norwegian?

Update
This works on my server, but not on my locale machine.


回答1:


You have to use strftime() instead of date().

Returns a string formatted according format using the given timestamp or the current local time if no timestamp is given. Month and weekday names and other language-dependent strings respect the current locale set with setlocale().




回答2:


Use IntlDateFormatter::format.

Example:

<?php
$df = new IntlDateFormatter('nb_NO',
    IntlDateFormatter::FULL, IntlDateFormatter::FULL,
    'Europe/Oslo');
echo $df->format(time());

gives:

torsdag 16. september 2010 kl. 21.23.03 Norge



回答3:


I know this topic is old but i had the same problem today. The dates are displayed correctly on my linux machine, but on my windows machine they are still in english.

If you want this to work on linux and windows machines you have to be careful with the setlocale() function. On linux you have to use 'nb_NO' (for example) for norwegian formats and on windows you have to use 'norwegian':

if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
    setlocale(LC_ALL, 'norwegian');
} else {
    setlocale(LC_ALL, 'nb_NO');
}

You can find a list of language codes for Windows in the MSDN.



来源:https://stackoverflow.com/questions/3729038/how-do-i-get-locale-day-and-month

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!