600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > mysql时区时间戳_PHP / MySQL时间戳和时区

mysql时区时间戳_PHP / MySQL时间戳和时区

时间:2021-05-23 08:10:34

相关推荐

mysql时区时间戳_PHP / MySQL时间戳和时区

如果我使用MySQL中的NOW()函数获取当前时间戳,我可以通过php获取该字段并在不同时区提供该时间吗? 基本上将当前时区的当前时间转换为另一个时区?

您可以使用DateTimeZone类:

$gmt = new DateTimeZone("GMT");

$datetimeInGMT = new DateTime($now, $gmt);

它还采用continent/city形式的位置,例如Europe/London。

如果您的日期时间是非UTC,则可以使用setTimezone:

$datetimeInGMT = new DateTime($now, new DateTimeZone("America/New_York"));

$datetimeInGMT->setTimezone(new DateTimeZone("GMT"));

是的,但如果我已经在不同的时区有时间戳怎么办?我可以将其转换为不同的时区吗?

@John尝试我添加的新代码。

+1(如果可以的话,DateTime的另一个+1)但不要忘记为了使其工作,您需要知道mySQL服务器的当前时区以获得正确的开始日期! MySQL的时区设置可能与系统的区域不同。

@Pekka,你可以用SELECT @@session.time_zone;得到它

此外,如果您不想使用DateTime类(没有理由,只是说)并且您有一个有效的时间戳或日期(如1月1日下午5:00或-01-01 20: 00:00),您可以执行类似date("whatever format",strtotime($timestamp) + $theoffset * 3600)的操作,其中$ timestamp是日期,$ theoffset是$ timestamp的时区与您希望将其更改为小时的时区之间的差异。

MySQL的时区处理比PHP更复杂。 它处理简单的时区(EST,PST等)和我称之为"区域时区"(美国/东部)。 使用区域区域使用正确的转换,包括夏令时,即使DST规则多年来发生了变化。

我所做的是使用MySQL函数UTC_TIMESTAMP()将我的所有日期时间存储为UTC。 然后,在查询中,我使用MySQL函数CONVERT_TZ()到我的目标时区。

/doc/refman/5.0/en/date-and-time-functions.html

注意:您可能需要更新时区表。

/downloads/timezones.html

从PHP 5开始,PHP就是两者中比较复杂的:DateTime类完全支持时区。可以设置DateTime时间戳并交叉转换为任何区域。 MySQL根本无法在DateTime字段中存储时区信息。不过,CONVERT_TZ当然是一种有效的方法

不一定有效。阅读Aarons对此问题的回复/questions/1646171/…

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。