我有一个设置,我想将购买时间存储到确切的秒。截至目前,我使用CURTIME()。现在它以这种格式返回时间16:03:59如果我想存储然后在正确的时区显示时间,如下午2:03,我该怎么办?感谢。
$qry = "INSERT INTO purchases
(id, qty, Date, Time, product_id, totalprice)
VALUES('$id', '$qty', CURDATE(), CURTIME(),'$pid', '$price')";
$result = @mysql_query($qry);
答案 0 :(得分:0)
情侣:
1)巩固Date& amp;将时间列分成单个,比如说orderDate列作为MySQL日期时间(那么你可以简单地使用,NOW()作为插入值)
2)PHP有很棒的文档: http://php.net/manual/en/function.date.php
设置UTC时区网站访问者的时区:
date_default_timezone_set('UTC'); // replace with variable, probably stored in user's session
不过,不确定MySQL是否提供了即时设置时区(可能设置为服务器默认值),因此您可能需要使用上面的php日期函数格式化orderDate。
总而言之,在使用$ q的查询结果循环中,您的显示可能是:
echo date("Y-m-d h:i:s", strtotime($q[''orderDate]));
答案 1 :(得分:0)
首先,我会存储time()的值,然后根据需要在适当的时区内转换为字符串。如果用户在旅行时改变他的时区,这会使它更加优雅。
要格式化用户的时区,您可以使用Javascript获取时区,然后将其传递给PHP并相应地格式化。之前已经问过/回答过:
答案 2 :(得分:0)
我会使用UTC_TIMESTAMP
将您的时间值存储在UTC中,然后使用ISO日期格式抓取它们:
SELECT DATE_FORMAT(UTC_TIMESTAMP, GET_FORMAT(DATETIME, 'ISO'));
之前的运行给出了:
2011-05-22 17:53:23
所以让我们说用户在西海岸,我们可以做这样的事情,以便当地时间:
$timeZone = 'America/Los_Angeles';
$dateSrc = '2011-05-22 17:53:23';
$dateTime = new DateTime($dateSrc, new DateTimeZone('GMT'));
$dateTime->setTimeZone(new DateTimeZone($timeZone));
echo "Result is: " . $dateTime->format('Y-m-d H:i:s');
示例运行:
$ php test.php
Result is: 2011-05-22 10:53:23