我已经制作了一个带有日期选择器的表单,所有表格都很好,一切都被发送并保存在数据库(MySQL)上。
我的问题是$unix_time
是一种固定格式吗?我的意思是unix_time总是会在同一时区保存,或者只是设置为用户输入的内容。
这是一个让我更容易解释我的意思的例子。
我住在英国,我在2014-02-05 09:59:00
发布了该表单,并将其作为2014-02-05 09:59:00
保存到数据库。
其他人在同一时间发布表单并且他们住在美国。他们发布的时间是2014-02-05 04:59:00
,比英国时间晚了5个小时。
是否会将2014-02-05 09:59:00
或2014-02-05 04:59:00
发布到数据库。
这是我的代码之一$ unix_time
$reg_start = $_POST['reg_start'];
$unix_time = strtotime($reg_start);
$date1 = date("Y-m-d H:i:s",$unix_time);
感谢您阅读
答案 0 :(得分:1)
它依赖于mysql服务器时区
例如格林威治标准时间(GMT)是标准时区
和mysql服务器同时执行的任何操作
答案 1 :(得分:1)
$ unix_time除非您要求用户设置时区,否则它不会统一到一个时区。 如果您有时间和时区,则必须切换到DateTime对象
$reg_start = $_POST['reg_start'];
$unix_time = strtotime($reg_start);
$reg_timezone = $_POST['reg_timezone'];
$date1 = new DateTime($unix_time, new DateTimeZone($reg_timezone));
然后你的日期会是这样的:
2000-01-01 00:00:00+12:00
2000-01-01 01:45:00+13:45
答案 2 :(得分:1)
为什么不在表格中创建一个给出当前时间戳的字段。
https://dev.mysql.com/doc/refman/5.5/en/datetime.html
来自doc:
MySQL将TIMESTAMP值从当前时区转换为UTC 存储,并从UTC返回到当前时区进行检索。 (对于其他类型,例如DATETIME,不会出现这种情况。