Localiza la hora actual en PHP
-
07-07-2019 - |
Pregunta
Intentando mostrar la hora actual con PHP (usando this ) :
$date = date('m/d/Y h:i:s a', time());
echo $date;
Tan simple como se pone. ¿Cómo lo localizo? Quiero traducir los meses y días al hebreo.
Gracias.
Solución
Zend_Date
está completamente internacionalizado. Debería comprobarlo para ver una forma simple de hacerlo:
Todos los nombres completos y abreviados de meses y días laborables son compatibles para Más de 130 idiomas. Métodos admite tanto la entrada como la salida de fechas usando los nombres localizados de meses y días de semana, en el formato convencional asociado con cada localidad.
Otros consejos
En realidad, no creo que sea posible en PHP 5.2 :-(
Al menos, no con lo que se incluye con / en PHP (Sin embargo, hay bibliotecas codificadas en PHP que podría usar, como otras respuestas señalaron)
Sin embargo, con PHP 5.3, tiene la IntlDateFormatter , que hace exactamente lo que quieres:
Esta clase representa la fecha de la UCI Funcionalidad de formateo. Permite usuarios para mostrar fechas en un localized formatear o analizar cadenas en PHP valores de fecha usando cadenas de patrones y / o patrones enlatados.
Por ejemplo, usando esa clase, así:
echo IntlDateFormatter::create('fr_FR', IntlDateFormatter::FULL, IntlDateFormatter::FULL)->format(time(time())) . "\n";
echo IntlDateFormatter::create('fr_FR', IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT)->format(time(time())) . "\n";
echo IntlDateFormatter::create('zh-Hant-TW', IntlDateFormatter::FULL, IntlDateFormatter::FULL)->format(time(time())) . "\n";
echo IntlDateFormatter::create('zh-Hant-TW', IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT)->format(time(time())) . "\n";
echo IntlDateFormatter::create('en_US', IntlDateFormatter::FULL, IntlDateFormatter::FULL)->format(time(time())) . "\n";
echo IntlDateFormatter::create('en_US', IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT)->format(time(time())) . "\n";
Obtendría:
dimanche 9 novembre 2008 23:54:47 GMT+00:00
9 nov. 2008 23:54
2008年11月9日星期日 下午11時54分47秒 GMT+00:00
2008/11/9 下午 11:54
Sunday, November 9, 2008 11:54:47 PM GMT+00:00
Nov 9, 2008 11:54 PM
Que se ve muy bien, ¿no?
Lo triste es que PHP 5.3 tiene solo unos pocos meses y no está disponible en muchos servicios de alojamiento ... Y requerirá pruebas (y probablemente soluciones) para su aplicación ...
Pensando en ello: quizás pueda instalar la extensión PECL intl en PHP 5.2, y obtener la misma funcionalidad ...
Si necesita una forma más simple que Zend_Date e IntlDateFormatter, pruebe la función estándar strftime
en php. Esto es lo que hice para ponerlo en funcionamiento con el idioma ruso que ejecuta php 5.3 en Ubuntu (la configuración regional de Rusia no estaba instalada).
Para instalar la configuración regional
-
cd / usr / share / locales
-
sudo ./install-language_pack ru_RU
-
sudo dpkg-reconfigure locales
- Reiniciar Apache
A continuación, use el siguiente fragmento de php:
setlocale(LC_TIME, 'ru_RU.UTF-8');
echo strftime('%A', time());
Debería salir el día de la semana de hoy.