【发布时间】:2014-06-09 08:44:47
【问题描述】:
我想在 php 中本地化日期和时间。我将日期时间以 UTC 格式存储在我的数据库中。我想:
- 在正确的时区显示时间
- 以正确的语言显示时间
对于第一个任务,我使用:
$time = //retrieve from database
$date_obj = new DateTime($time, new DateTimeZone("UTC"));
$date_obj->setTimeZone(new DateTimeZone($timezone));
$display_date = $date_obj->format($format);
有效。
对于第二个任务,在做了一些研究之后,似乎我必须做这样的事情:
setlocale(LC_TIME, "de_DE"); //only necessary if the locale isn't already set
$formatted_time = strftime("%a %e.%l.%Y", $mytime->getTimestamp())
问题是我不知道如何同时做这两件事。
谢谢!
【问题讨论】:
-
正如@Pulkit 所建议的,您可以使用 date_default_timezone_set。见us1.php.net/date_default_timezone_set
-
我不确定您所说的“一起做这两件事”是什么意思。通常,您必须将时区和语言都存储在用户的个人资料首选项中,并依次做两件事。即使您知道Geo-location (GPS),您也可以导出时区和国家/地区,但不能导出用户的语言,因为有些国家/地区的多种语言同时有效(例如en.wikipedia.org/wiki/…)
-
@xmojmr,我知道这两件事是不同的。我的意思是,由于 $date_obj 和 $mytime 的格式不同,我该如何依次做这两件事?谢谢。
-
@user2335065 你的意思是像stackoverflow.com/questions/10909911/… 问题中的一个接一个,或者你如何拆分/解析/连接字符串?
标签: php datetime localization timezone locale