【发布时间】:2011-07-27 20:25:03
【问题描述】:
我想在 PHP 中生成一个时间戳,然后将该值存储在 SQLite 中。
代码如下:
$created_date = date("YYYY-MM-DD HH:MM:SS",时间());
这是存储在数据库中的内容(看起来有误): 2020 年 11 月 21 日下午 12:39:49
我应该如何更改我的代码以在 SQLite 中正确存储当前日期/时间
【问题讨论】:
我想在 PHP 中生成一个时间戳,然后将该值存储在 SQLite 中。
代码如下:
$created_date = date("YYYY-MM-DD HH:MM:SS",时间());
这是存储在数据库中的内容(看起来有误): 2020 年 11 月 21 日下午 12:39:49
我应该如何更改我的代码以在 SQLite 中正确存储当前日期/时间
【问题讨论】:
为什么不直接更新您的 SQLite 查询以使用 date('now')? reference
但是,在 PHP 中你应该可以使用
$created_date = date('Y-m-d H:i:s');
【讨论】:
我刚刚为我自己的项目实现了这个..
我的解决方案是使用 UTC 时间格式officially specified for the web: RFC3339。 您可以使用以下任一PHP time format constants:
DATE_RFC3339DATE_W3CDATE_ATOM示例:
$sqlite_timestamp = date(DATE_RFC3339);
echo "My SQLite timestamp = ".$sqlite_timestamp;
最好的部分是字母数字顺序对应日期顺序,所以可以在日期字段上使用ORDER BYSQL语句!
【讨论】:
您如何检查存储的值是多少?另外,数据库中列的数据类型是什么?你知道SQLite is typeless,所以所有值都被存储为字符串或整数?
【讨论】:
$created_date = date('Y-m-d H:i:s');
echo $created_date ."<br />\n";
$created_date = date('l, F jS, Y - g:ia');
echo $created_date ."<br />\n";
$created_date = date('n/j/y H:i:s');
echo $created_date ."<br />\n";
$created_date = date('r'); // RFC 2822 formatted date
echo $created_date ."<br />\n";
$created_date = date('c'); // ISO-8601 formatted date
echo $created_date ."<br />\n";
输出可能是:
2011-04-01 19:33:40
Friday, April 1st, 2011 - 7:33pm
4/1/11 19:33:40
Fri, 01 Apr 2011 19:33:40 +0200
2011-04-01T19:33:40+02:00
请注意,date() 函数取决于 PHP 配置中设置的默认时区。您始终可以使用echo date_default_timezone_get(); 对其进行测试,或者通过date_default_timezone_set('TIMEZONE_IDENTIFIER'); 设置它,其中TIMEZONE_IDENTIFIER 是the list of supported timezones 中的一个。
【讨论】: