Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I get locale day and month?

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.

like image 969
Steven Avatar asked Dec 03 '22 04:12

Steven


2 Answers

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
like image 68
Artefacto Avatar answered Dec 18 '22 13:12

Artefacto


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().

like image 25
Matteo Riva Avatar answered Dec 18 '22 12:12

Matteo Riva