php - 如何在mysql datetime列中存储带有时区信息的时间?
问题描述
目前,我有来自 shopify api ( 2018-12-16T17:36:29+11:00 ) 的时间戳,我需要将其存储在 mysql 的 datetime 字段中。
第一个问题:
2018-12-16T17:36:29+11:00到底是什么意思?
日期:2018-12-16,
时间:17:36:29,
时区:+11:00?????
第二个问题:
如果我想将时间戳存储到 mysql datetime 列中。我收到这个错误
SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '2018-12-16T17:36:29+11:00' for column 'shopify_created_at' at row 1
使用时区信息存储时间的正确方法是什么?
解决方案
2018-12-16T17:36:29+11:00 到底是什么意思?
这是一个 UTC 偏移时间戳,所以你有:
UTC Date: `2018-12-16`
UTC Time: `17:36:29`
Offset: `+11:00`
我不熟悉 Shopify 及其 API,但是,如果了解/存储时区很重要,我会将 UTC 时间存储在数据库的一列(使用datetime
字段类型)中,并将偏移时间存储在另一列中。
例子:
| Date | Timezone |
==========================================
| 2018-12-16 17:36:29 | +11 |
这样,您现在可以获得所需时区的准确时间。例子:
$strtime = $record['Date'].' '.$record['Timezone']' hours';
echo date('Y-m-d H:i:s', strtotime($strtime));
推荐阅读
- sql - 带分组的 SQL 数据透视表
- git - 如何撤消“git update-ref -d refs/heads/master”?
- intellij-idea - Goland 自定义 shell 不适用于调试模式
- c# - 订阅和取消订阅单元格按钮单击事件在 iOS 11 中不起作用
- ruby-on-rails - 仅当字段属于其他表行时才存在验证字段
- python - librosa 的加载和 scipy.io.wavfile 的读取之间的区别
- java - 警报应用程序防止更改系统时间
- haskell - 在haskell中做符号
- java - 哪些映射用于 GET 请求?
- dns - 获取 .virgin 域名