Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
转换为大整数时PHP日期格式问题_Php_Date_Bigint - Fatal编程技术网

转换为大整数时PHP日期格式问题

转换为大整数时PHP日期格式问题,php,date,bigint,Php,Date,Bigint,我想将两个日期作为big int类型存储到数据库中,我有一个数组,该数组被序列化,并将数组值发送到第二个表单,该数组由 [checkin] => 01-07-2015 [checkout] => 03-07-2015 在使用 $arr['checkin'] = strtotime($arr['checkin']); $arr['checkout'] = strtotime($arr['checkout']); 我得到的值分别为14356890001435861800,比实际日期值

我想将两个日期作为big int类型存储到数据库中,我有一个数组,该数组被序列化,并将数组值发送到第二个表单,该数组由

[checkin] => 01-07-2015
[checkout] => 03-07-2015
在使用

$arr['checkin'] = strtotime($arr['checkin']);
$arr['checkout'] = strtotime($arr['checkout']);
我得到的值分别为
14356890001435861800
,比实际日期值少一天

如果我的代码是

<?php echo date('d-m-y', '1435689000');?>
输出将为
30-06-15


我想不出是什么问题,请你帮忙。谢谢。

在使用strotime功能之前,我们必须设置日期格式。因为php不能接受用户提供的所有格式。我们可以这样使用:


您需要了解这两个函数之间的区别

(一)

返回使用给定整数时间戳或当前时间(如果未给定时间戳)根据给定格式字符串格式化的字符串。换句话说,timestamp是可选的,默认值为time()

(二)

与date()函数相同,只是返回的时间是格林威治标准时间(GMT)

如果您看到了另一个函数,它已经定义了这两个函数是相同的,但返回的是GMT

如果您同时响应这两个函数和
时间
,您就会理解其中的区别

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。因此,这两个时区的输出都是正确的,但区别在于时区

可能您的数据库时区和PHP时区不同…@Amadan知道我如何检查这两个时区是不同的还是相同的吗???@Amadan我想我无法获得日期对话的正确值。稍后,我可以考虑数据库和PHP的时区。我的外星人思维探测器不会让我看到你正在使用哪个数据库。我相信,对于PHP,您可以使用@shridhar运行phpmyadmin中的
SELECT NOW()
,了解服务器的时间,并将其与PHP中的日期时间进行比较\
$date = \DateTime::createFromFormat("d-m-Y" , '03-07-2015');
echo gmdate('d-m-y', strtotime($date->format('Y-m-d H:i:s')));
string date ( string $format [, int $timestamp = time() ] )
string gmdate ( string $format [, int $timestamp = 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