【问题标题】:How to localize date and time in php?如何在php中本地化日期和时间?
【发布时间】: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


【解决方案1】:

请试试这个,我想它可能对你有帮助。

$timezone = "Asia/Kolkata";
date_default_timezone_set($timezone);

mysql_query("SET time_zone = '".date_default_timezone_get()."'");

它在每个页面中执行

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 2016-12-18
    • 2011-11-17
    • 2016-08-21
    • 2010-12-27
    相关资源
    最近更新 更多