L'utilizzo di strftime()
in combinazione con setlocale()
è un'opzione.
Tuttavia, è necessario tenere presente che nelle installazioni con php filettati, setlocale()
può comportarsi in modo imprevisto, poiché le informazioni sulla locale vengono gestite per processo, non per thread. Pertanto è importante chiamare lo setlocale()
ogni volta prima di ogni chiamata a strftime()
per garantire che utilizzi la locale corretta.
Inoltre, per i sistemi Windows, è necessario utilizzare stringhe un po 'insolite per il parametro $locale
per setlocale()
.
Vedere i documenti per ulteriori informazioni su entrambi questi problemi.
Qualcosa del genere dovrebbe funzionare:
// define the locales for setlocale() for which we need the daynames
$locales = array(
'en_EN',
'de_DE',
'nl_NL'
// etc...
);
// be aware that setlocale() needs different values on Windows machines
// see the docs on setlocale() for more information
$locales = array(
'english',
'german',
'dutch'
// etc...
);
// let's remember the current local setting
$oldLocale = setlocale(LC_TIME, '0');
// initialize out result array
$localizedWeekdays = array();
// loop each locale
foreach($locales as $locale)
{
// create sub result array for this locale
$localizedWeekdays[ $locale ] = array();
// 7 days in a week
for($i = 0; $i < 7; $i++)
{
// set the locale on each iteration again
setlocale(LC_TIME, $locale);
// combine strftime() with the nifty strtotime()
$localizedWeekdays[ $locale ][] = strftime('%A', strtotime('next Monday +' . $i . ' days'));
// reset the locale for other threads, as a courtesy
setlocale(LC_TIME, $oldLocale);
}
}
// there is your result in a multi-dimensional array
var_dump($localizedWeekdays);
fonte
2011-10-14 09:48:54
Nome giorno? Intendi come 'lunedì, martedì, mercoledì ... ecc?' – LouwHopley
Perché non definirli da soli? Di solito è il modo migliore per andare, perché chiedere 'date()' dipende dalle impostazioni locali notoriamente inaffidabili. –
* (riferimento) * http://www.php.net/manual/en/intldateformatter.format.php – Gordon