php - 在 SQLite 中以 UTC 存储并使用 PHP 在本地时区显示
问题描述
我有一个包含日期时间列的表:
$db = new SQLite3('test.db');
$results = $db->query('CREATE TABLE test (id INTEGER PRIMARY KEY AUTOINCREMENT,
date DATE, foo TEXT);');
我添加一行(以UTC存储添加行的日期时间)
$results = $db->query('INSERT INTO test (date, foo) VALUES(CURRENT_TIMESTAMP, "bar");');
这行得通。现在显示行时:
$results = $db->query('SELECT * FROM test ORDER BY date desc');
while ($row = $results->fetchArray()) {
echo $row['date'];
}
日期显示如下,以 UTC 为单位:2019-04-27 16:41:33
。
如何改为在本地时区显示?(包括夏令时)
我可以想象有不同的选择:
使用本地时区直接存储在 SQLite 中(但我认为这不是一个好习惯)
以 UTC 存储在 SQLite 中,并在
SELECT
. 如何?以UTC格式存储在SQLite中,并通过PHP进行UTC->本地时区转换。
如何正确执行此操作?
解决方案
正如评论所建议的,此页面提到了localtime
修饰符。这是一个解决方案:
$results = $db->query('SELECT datetime(date, "localtime") AS localdate, foo FROM test ORDER BY date desc');
while ($row = $results->fetchArray()) {
echo $row['localdate'];
}
推荐阅读
- git - 如何从 GIT 中的特定分支下载代码
- visual-studio-code - VScode 中的定义会发生什么?
- plotly - 未捕获的错误:索引必须是 gd.data 的有效索引 - Plotly.js
- reactjs - 开玩笑:单击按钮在函数内测试模拟调度
- javascript - 在 react js 中使用 materialui-daterange-picker 包访问 startDate 和 endDate 时遇到问题
- javascript - 如何按特定字符串搜索 Google 表格?
- netty - 如何使用 Netty 发送多响应数据?(第 2 部分)
- git - Git Flow:如何删除功能
- ios - 从具有复杂类型和 DocumentReferences 的 Firebase 文档创建对象
- ruby-on-rails - 在将我的 Rails 版本从 Heroku 的 6.1.3 更改为 6.0.3.5 之后。运行 Rails S 后出现运行时错误