【问题标题】:FROM_UNIXTIME() and PHP strtotime()FROM_UNIXTIME() 和 PHP strtotime()
【发布时间】:2012-12-02 00:27:23
【问题描述】:

我有一个字符串:

2012 年 12 月 27 日上午 04:00

使用 strtotime() 将字符串转换为纪元:

1356609600

那么当这个被调用时:

select FROM_UNIXTIME(1356609600);

我看到输出的时间被截断了。有谁知道为什么时间被截断或如何从这种类型的转换中保留时间:

2012-12-27 12:00:00

【问题讨论】:

  • 大概你为 PHP 和 MySQL 设置了不同的时区。我建议将它们都设置为 UTC 以避免这种混乱(在显示等需要时进行时区转换)。

标签: php mysql datetime epoch


【解决方案1】:

这里没有时间被截断。 12/27/2012 04:00 amstrtotime 假定为当地时间。当其转换为 mysql 时,mysql 将时间设置为本地时区。现在如果您在 Mysql 和 php 上的时区设置不同,那么它不会显示相同的时间。

对于 PHP,在 php.ini 中设置 date.timezone 并在 my.cnfmy.ini 中设置 default-time-zone

例如,我的时区是Asia/Dhaka。我在 php.ini 和 my.cnf 中都设置了它

php.ini

date.timezone = Asia/Dhaka 

my.cnf

default-time-zone = 'Asia/Dhaka'

【讨论】:

  • 是的。我实际上只是使用了一个转换器,令我惊讶的是,它恰好发生在格林威治标准时间凌晨 4:00 转换为 12:00:00 的情况下。我将接受这篇文章作为正确答案。谢谢。
猜你喜欢
  • 2014-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多