【问题标题】:PHP Timezone problemPHP时区问题
【发布时间】:2011-02-09 10:30:32
【问题描述】:

我在新墨西哥州的阿尔伯克基。每次将条目放入数据库时​​,我都会尝试更新一些图章。

这是我使用的。

date_default_timezone_set("US/Mountain");
$stamp =mktime();
//$stamp = gmmktime();
$time = date("H:i:s",$stamp);$date = date("Y-m-d",$stamp);

我的当地时间是下午 12:15,但我得到的是晚上 18:15。

如果您知道出了什么问题,请告诉我。

【问题讨论】:

  • 你的意思是你得到 18:15 的值是 $time,还是说 18:15 是你的数据库中显示的?
  • 谢谢!我需要更加专心,我在应用程序插入和进入数据库的节点处遇到问题。我在那里使用的时间是 UTC。
  • 这就是为什么我更愿意尽可能将时区信息保留在文本表示中。
  • 目前您有两个单独的字符串,例如 2010-04-110:07:15。它们在不同的时区有不同的含义。将其与2010-04-18T12:44:43-0600 之类的字符串进行比较。您是否(错误地)使用了 utc 时区并不重要,因为包括了偏移量。结果字符串2010-04-18T18:44:43-0000 仍然代表相同的时间点。顺便说一句:也许您不必在 php 中转换日期/时间值,也许您的数据库可以为您做到这一点。但这取决于你使用的他的 dbms。

标签: php timezone timestamp


【解决方案1】:

“我的当地时间是下午 12:15,但我得到的是下午 18:15。”
6 小时 ...这是 UTC 和美国/山区之间的偏移量,您当地时区的 18:00 是 12:00 UTC。
是什么

$rc = date_default_timezone_set("US/Mountain");
$stamp =mktime();
echo 'version: ', phpversion(), "\n";
echo 'rc=', var_dump($rc);
echo 'stamp: ', $stamp, "\n";
echo 'time(): ', time(), "\n";
echo 'date: ', date(DateTime::ISO8601, $stamp), "\n";
echo 'gmdate: ', gmdate(DateTime::ISO8601, $stamp), "\n";

打印?

【讨论】:

  • 版本:5.2.13 rc=bool(true) 戳:1271616283 时间():1271616283 日期:2010-04-18T12:44:43-0600(啊哈!)gmdate:2010-04- 18T18:44:43+0000 这不是我试图做的本质吗?
  • 是的。输出看起来不错。所以我现在的赌注是“你发布的代码不是你测试过的代码”。 ;-)
【解决方案2】:

试试 date_default_timezone_set("America/Denver");

【讨论】:

  • 我不认为这会有所作为。虽然America/Denver 优于US/Mountain,但后者仍然有效(目前)。见php.net/manual/en/timezones.others.php
  • 是否有可能您使用的是 php
  • 然后会发生致命的“未定义函数”。
猜你喜欢
  • 1970-01-01
  • 2012-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多