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.
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: //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 IntlDateFormatter
1 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
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[]]. " ";
// ^^ 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 "" . $datefmt->format[$premier]. " "/*...*/;
# ...
[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
Chủ Đề