Hướng dẫn php date translate

"; // ^^ feed the timestamp

Sidenote: as Fred said in the comments, this is just a fragment because your markup is a bit off (missing tags, etc, and most likely this is inside a loop).

answered Sep 29, 2014 at 14:01

KevinKevin

41.4k12 gold badges53 silver badges68 bronze badges

A bit late but I prefer using IntlDateFormatter which is system-locale independant and output is guaranteed to be in UTF-8:

$datefmt = new IntlDateFormatter('de_DE', NULL, NULL, NULL, NULL, 'LLLL');
while($row = mysqli_fetch_array($result)) {
    # ...
    echo "
"/*...*/; # ...

(see ICU's documentation for a custom format - the last argument of IntlDateFormatter constructor)

answered Sep 29, 2014 at 14:44

julpjulp

3,7101 gold badge22 silver badges20 bronze badges

I have this MySQL query, which returns two dates (which are both formatted as a-m-Y). Now I want to translate 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!

asked Aug 2, 2011 at 10:53

Use setlocale and strftime together:

setlocale(LC_TIME, array('da_DA.UTF-8','[email protected]','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.

Hướng dẫn php date translate

answered Aug 2, 2011 at 11:03

5

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: http://userguide.icu-project.org/formatparse/datetime for pattern syntax
echo $fmt->format(new \DateTime()); 
// Output: 6 gennaio 2016 12:10

answered Jun 7, 2016 at 11:55

Simon EpskampSimon Epskamp

8,0463 gold badges52 silver badges56 bronze badges

1

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

answered Aug 2, 2011 at 10:56

Pascal MARTINPascal MARTIN

388k77 gold badges646 silver badges656 bronze badges

2

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','[email protected]','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

answered Nov 4, 2020 at 13:38

DhruvDhruv

1,7341 gold badge5 silver badges6 bronze badges

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);

Pranav Singh

15.1k24 gold badges76 silver badges98 bronze badges

answered Jan 7, 2014 at 2:48

";}
?>
Vergangene Projekte
" .strftime("%B", $premier->getTimestamp()). " " .$row['title']. "

Ok I modified the code to show all of it and also inserted the suggestions and now it works just fine!! Perfect

Cheers Chris

Kevin

41.4k12 gold badges53 silver badges68 bronze badges

asked Sep 29, 2014 at 13:49

3

First off make sure that indeed fr_FR is installed on the machine for your script to use.

Try to use locale -a on your terminal to check.

Second, since DateTime only works on english, use strftime() on that, and you're using it without the timestamp.

setlocale(LC_ALL, 'fr_FR');
$premier = new DateTime($row['project_date']);
echo "
" .strftime("%B", $premier->getTimestamp()). "
" . $datefmt->format($premier). "