- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道这里有一百个关于这个主题的问题,但我已经阅读了所有问题,但仍然没有理解。
我使用 UTC_TIMESTAMP()
将上次访问 API 的日期存储在设置表中。列类型是 mysql timestamp
:
UPDATE settings SET last_pull = UTC_TIMESTAMP();
当我从 mysql 中选择它时,我得到以下信息:
mysql> select last_pull from settings;
+---------------------+
| last_pull |
+---------------------+
| 2015-06-30 23:05:00 |
+---------------------+
1 row in set (0.00 sec)
似乎很清楚,因为我使用的是太平洋时间,UTC 时间提前 8 小时。因此,我创建该记录时是本地时间 16:05:00。 (实际上是本地时间 16:05——我在那里!)
令我困惑的是,当我将数据从数据库中拉回时,根据此处的每个答案,我应该能够使用默认的 PHP date
或 datetime
函数,假设我的时区设置正确,我应该从该时间戳获取本地时间(例如 date('Y-m-d H:i:s', $last_pull_value)
应该返回 2015-06-30 16:05:00
).
这个假设不正确吗?我已验证我的 linux 和 PHP 时区是正确的,并且 mysql 也已正确设置。
当我这样做的时候
$last_pull = new DateTime();
$last_pull->setTimestamp($row['last_pull']);
var_dump($last_pull->format("c"));
它返回:
"2015-06-30 23:05:00"
然后我明确设置时区:
$last_pull = new DateTime();
$last_pull->setTimestamp($row['last_pull']);
$last_pull->setTimezone(new DateTimeZone('America/Los_Angeles'));
var_dump($last_pull->format("c"));
它返回完全相同的东西(如果默认的 TZ 开始时是正确的,这是有意义的)。
"2015-06-30 23:05:00"
我的问题是如何获取 API 上次提取时的本地时间?为什么 datetime
函数不返回 16:05:00?
谢谢
最佳答案
如果您在初始化时为 DateTime 对象设置时区,它将按您预期的方式工作。
$last_pull = new DateTime('2015-06-30 23:05:00', new DateTimeZone('UTC'));
var_dump($last_pull->format("c")); //string(25) "2015-06-30T23:05:00+00:00"
$last_pull->setTimezone(new DateTimeZone('America/Los_Angeles'));
var_dump($last_pull->format("c")); //string(25) "2015-06-30T16:05:00-07:00"
DateTime 对象的文档指出,用于新日期时间对象的默认时区是您当前的时区 - http://php.net/manual/en/datetime.construct.php
关于php - Mysql、PHP 和 UTC_TIMESTAMP(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31150794/
我正在编写一个具有时间段预订系统的应用程序。用户可以处于不同的时区,因此我需要以 UTC 时间将值存储在数据库中。 我想知道 UTC_TIMESTAMP() 在 MySQL 中是如何计算的。靠谱吗?
我想知道是否有一种简单的方法可以在 MySQL 中设置一个与 UTC_TIMESTAMP() 相关的日期时间字段。例如,如果我想将它设置为过去 1 小时,是否有一些等同于 UPDATE table_n
我知道这里有一百个关于这个主题的问题,但我已经阅读了所有问题,但仍然没有理解。 我使用 UTC_TIMESTAMP() 将上次访问 API 的日期存储在设置表中。列类型是 mysql timestam
我正在尝试将纯 MySQL 查询转换为 Symfony2 中的 Doctrine 查询生成器。我有一个 SELECT 查询的以下部分计算 rcv.rtcdatetime 字段中的 UTC 时间戳与当前
我需要一种在 CSV 文件中使用 UTC_TIMESTAMP() 函数的方法。 目前我正在使用以下语法; LOAD DATA INFILE '/path/to/file.csv' INTO TABLE
我在英国有两台 Linux/MySQL 服务器,两份报告的当前系统时区均为 BST (GMT+1),但我发现 MySQL 的输出存在差异。 以下查询: SELECT version(), @@time
我正在使用以下代码将 UTC_TIMESTAMP 提交到 MySQL 数据库: $logq = "INSERT INTO logs (Name, Page, Date) VALUES ('$user'
我需要从获取当前UTC时间的结果中找到下一个(能被五整除的分钟):00,让我解释一下...... 我用 SELECT UTC_TIMESTAMP() MySql 中的函数,返回“2010-11-11
我希望我在 MySQL 中创建的表看起来像这样: CREATE TABLE Test_Tbl ( Create_Date datetime Default UTC_TIMESTAMP() ); 但是,
是否可以通过EF5从MySQL获取UTC_TIMESTAMP? 我已经尝试过 var z = db.Database.ExecuteSqlCommand("SELECT UTC_TIMESTAMP()
我想知道如何使用 Yii 中的 CActiveRecord 实现此目的: SELECT name, surname, UTC_TIMESTAMP(last_seen) FROM users WHERE
要么是我太蠢了,要么是哪里出了问题。 我有两个 SQL Server,一个在我的本地机器上(本地时间 +2 GMT),另一个在其他地方(NOW() 似乎返回+8 GMT),我通过 phpMyAdmin
有很多类似的问题,但我相信这个是独一无二的。 (抱歉,如果不是) 我们的数据库有一个名为“date_sampled”的日期时间字段,我们用 UTC_TIMESTAMP() 存储它 我们的目标是返回自
什么是 INTERVAL 和 UTC_TIMESTAMP 的 sqlite 等价物?例如,假设您正在将以下 SQL 从 MySQL“移植”到 sqlite: SELECT mumble FROM
我进行了无休止的搜索,但找不到适合我的解决方案。我将记录存储在 mysql 数据库中,该数据库记录创建它的 UTC 时间 (UTC_TIMESTAMP())。我需要在用户本地时间(使用 JavaScr
我是一名优秀的程序员,十分优秀!