我有问题以YYY-d-m格式转换我的某个日期。
我有数组$ searchQuery,当使用print_r打印时,打印下面的输出:
Array ( [selectedArea] => 0
[checkin] => 30/07/2014
[checkout] => 01/08/2014
[rooms] => 1
[adults] => 2
[childrens] => 0 )
我有以下代码:
echo "Checkin is:" .$searchQuery['checkin']."<br />";
$what = strtotime($searchQuery['checkin']);
echo "New checkin is:" .$newCheckin = date('Y-m-d', $what) ."<br />";
echo "Checkout is:" .$searchQuery['checkout']."<br />";
$newCheckOutTemp = strtotime($searchQuery['checkout']);
echo "New checkout is:" .$newCheckout = date('Y-m-d', $newCheckOutTemp) ."<br/>";
打印以下内容:
Checkin is:30/07/2014
New checkin is:1970-01-01 ------>????
Checkout is:01/08/2014
New checkout is:2014-01-08
我有两个问题......为什么第一个日期在转换时打印1970-01-01,第二个,我怎么能在这两个日期之间的天数差异。
任何帮助都将深受赞赏。
问候,约翰
答案 0 :(得分:1)
尝试使用datetime()
$now = new DateTime(str_replace('/', '-','30/07/2014'));
echo $now->format('Y-m-d');
$newCheckOutTemp = new DateTime(str_replace('/', '-','01/08/2014'));
echo $newCheckOutTemp->format('Y-m-d');
或date()
echo date('Y-m-d', strtotime(str_replace('/', '-',$what)));
echo $newCheckout = date('Y-m-d', strtotime(str_replace('/', '-',$newCheckOutTemp)));
对于白天的差异这么多答案: - Date Difference in php on days?
答案 1 :(得分:1)
似乎strtotime()期望您的日期格式为m / d / Y.当您通过从第30个月开始的日期时,它不知道如何处理它并返回日期1970-01-01。如果仔细查看结帐结果,可能与您预期的不一样(1月8日而不是8月1日)。
我要做的是写一个小帮手功能来处理你的所有日期。
function formatDate($date) {
return \DateTime::createFromFormat('m/d/Y', $date)->format('Y-m-d');
}
然后稍后使用它:
$newCheckin = formatDate($searchQuery['checkin']);
$newCheckout = formatDate($searchQuery['checkout']);
答案 2 :(得分:0)
我认为你必须尝试:date('Y-m-d', strtotime($what))
而不是date('Y-m-d', $what)