开发者

Change the language for date in php

I have this MySQL query, which returns two dates (which are both formatted as a-m-Y). Now I want to tr开发者_Go百科anslate this date into my own language (Danish). How can I do that. I have tried both the setlocale() and strftime() functions, but it won't work. I know it's a very basic question, but i really need help :) Thanks a lot!


I found that setlocale isn't reliable, as it is set per process, not per thread (the manual mentions this). This means other running scripts can change the locale at any time. A solution is using IntlDateFormatter from the intl php extension.

  • Install intl if necesarry (ubuntu): sudo apt-get install php5-intl

  • Install the locale you want to use (I'm using italian as an example): sudo locale-gen it_IT

  • Generate a locally formatted date:

$fmt = new \IntlDateFormatter('it_IT', NULL, NULL);
$fmt->setPattern('d MMMM yyyy HH:mm'); 
// See: https://unicode-org.github.io/icu/userguide/format_parse/datetime/#datetime-format-syntax for pattern syntax
echo $fmt->format(new \DateTime()); 
// Output: 6 gennaio 2016 12:10


Use setlocale and strftime together:

setlocale(LC_TIME, array('da_DA.UTF-8','da_DA@euro','da_DA','danish'));
echo strftime("%A"); // outputs 'tirsdag'

Works on my php installation on Windows.

strftime(): Warning! This function has been DEPRECATED as of PHP 8.1.0. Relying on this function is highly discouraged.


Use

http://php.net/manual/en/function.strftime.php

<?php
setlocale(LC_ALL, 'da_DA');

echo strftime("%A %e %B %Y");
?>


I don't think the date() function is quite evolved enough for you, here.

Instead, I would recommend you take a look at the IntlDateFormatter1 class (quoting) :

Date Formatter is a concrete class that enables locale-dependent formatting/parsing of dates using pattern strings and/or canned patterns.

There are a couple of examples on the manual page of IntlDateFormatter::format(), where that method is used to display a date in two different languages, by just setting the desired locale.


1. bundled with PHP >= 5.3


This Will Surely works for you if you want norwegian date and month format

$date = '2016-11-16 05:35:14';
setlocale(LC_TIME, array('nb_NO.UTF-8','nb_NO@norw','nb_NO','norwegian'));
echo strftime("%e %b %Y",strtotime($date));

if you want to get other language locale ids like nb_NO then refer this site International Components for Unicode (ICU) Data


If you are trying to convert a datetime try this:

$fecha = $dateConsulta->format('d-M-Y');  
$fecha = str_replace('Jan','Ene',$fecha);
$fecha = str_replace('Apr','Abr',$fecha);
$fecha = str_replace('Aug','Ago',$fecha);
$fecha = str_replace('Dec','Dic',$fecha);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜