转换为大型int

时间:2015-05-25 04:02:55

标签: php date bigint

我想将类型为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

我无法弄清楚问题是什么,请你帮忙。谢谢..

2 个答案:

答案 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')));