我有一个发布到PHP脚本的应用程序,我希望PHP脚本基本上获取当前时间和日期,并将其插入到我的SQL数据库中。
我目前正在使用' $time()
'在PHP中,然后将其传递到我的SQL DB中。为了检索时间和日期,我使用' gmdate("M d Y H:i:s", $time);
'。
我有几个问题:
当我测试它时,它节省的时间落后一小时,那么我该如何应用不同的时区? (我目前在伦敦/英格兰) - 但对于使用此应用程序的用户而言可能并非如此。
PHP从哪里检索时间?它是本地的吗?从服务器?
在我的SQL中,我应该将数据类型设置为什么?时间戳?目前,我已将其设置为varchar - 但由于所有这些不同的日期和时间类型,我不太确定? (日期,日期时间,时间,时间戳)。
每次用户打开应用程序时都会调用此PHP,因此我希望能够看到:'啊,所以我看到该用户在14日星期三21:20打开了应用程序。
对不起,如果它是一个noob问题,但是我的大脑已经过载了PHP和SQL这么多的时间和日期类和函数!
答案 0 :(得分:0)
首先,PHP时间从它正在运行的服务器上获取时间。
但是如果您真的想要插入记录的时间,您应该执行以下操作之一:
在datetime类型的表中创建一个字段,并将默认值设置为:
GETDATE()
这将自动设定时间,而不必做任何特别的事情。
如果您在输入时需要,仍然使用SQL:
更新[tablename]设置LastUpdate = GETDATE()
这样做可以确保时间恰好是设置记录的时间。
答案 1 :(得分:0)
PHP Time()函数返回EPOCH时间(自1970年1月1日00:00:00 GMT以来的秒数)。
您可以使用date_default_timezone_set()以及strftime()或mktime()将其转换为当地时间的服务器。
如果用户位于不同的时区,您可以通过您的应用程序设置此项。
我链接了上面列出的每个函数的PHP手册页。
答案 2 :(得分:0)
如何在MySQL表结构上创建一个DateTime字段并使用MySQL来获取和设置NOW()的日期?让MySQL做大多数计算,它将帮助您优化PHP脚本的响应时间。
请看这个例子:http://www.w3schools.com/sql/func_now.asp
按照该页面的示例,但是对于UPDATE:
UPDATE orders set OrderDate=NOW() WHERE OrderId=9999
答案 3 :(得分:0)
Setting Timezone will fix the issue. I guess.
$date = date_create('2000-01-01', timezone_open('Pacific/Nauru'));
echo date_format($date, 'Y-m-d H:i:sP') . "\n";
date_timezone_set($date, timezone_open('Pacific/Chatham'));
echo date_format($date, 'Y-m-d H:i:sP') . "\n";