我想将类型为big int的两个日期存储到数据库中我有一个序列化的数组,并将数组值发送到第二个表单,数组由
组成[checkin] => 01-07-2015
[checkout] => 03-07-2015
使用
转换后$arr['checkin'] = strtotime($arr['checkin']);
$arr['checkout'] = strtotime($arr['checkout']);
我的价值分别为1435689000 1435861800
,比实际日期值少一天。
并且只是在我的服务器中通知我的代码是
<?php echo date('d-m-y', '1435689000');?>
然后输出将是01-07-15
,如果我尝试使用gmdate
函数,如下所示
echo gmdate('d-m-y', '1435689000');
输出将为30-06-15
我无法弄清楚问题是什么,请你帮忙。谢谢..
答案 0 :(得分:2)
您需要了解这两个功能之间的区别
1)date
string date ( string $format [, int $timestamp = time() ] )
使用给定的整数 timestamp 返回根据给定格式字符串格式化的字符串,如果没有给出 timestamp ,则返回当前时间。换句话说,timestamp是可选的,默认为time()的值。
2)gmdate
string gmdate ( string $format [, int $timestamp = time() ] )
相同
to the date() function
,但返回的时间是格林威治标准时间(GMT)。
如果您已经看到另一个功能,它已经定义两者都相同,但gmdate将其返回 GMT
如果您同时回复这两个功能time
,您将了解其中的差异
echo date('Y-m-d H:i:sP',1435689000);//2015-07-01 00:00:00+05:30
echo gmdate('Y-m-d H:i:sP',1435689000);//2015-06-30 18:30:00+00:00
因为根据 GMT 时区,您当前的时间 +0530 在 GMT 之前。因此两者的输出都是正确的,但区别在于时区
答案 1 :(得分:0)
我们必须在使用strtotime函数之前设置日期格式。因为用户提供的所有格式都不能通过php接受。我们可以这样使用:
$date = \DateTime::createFromFormat("d-m-Y" , '03-07-2015'); echo gmdate('d-m-y', strtotime($date->format('Y-m-d H:i:s')));