在URL中传递英国日期

时间:2013-05-07 11:50:14

标签: php date

我按英国格式在URL中传递日期:

http://www.website.com/index.php?from_date=01/04/2013&to_date=12/04/2013

日期范围为2013年4月1日至2013年4月12日。

然后我使用以下PHP将其转换为YYYY-MM-DD格式。

<?php

$rpt_from_date = date("Y-m-d", strtotime($_GET["from_date"]) );
$rpt_to_date = date("Y-m-d", strtotime($_GET["to_date"]) );

echo $rpt_from_date;
echo "</br>";
echo $rpt_to_date;

?>

由于某种原因,这不起作用。以上内容将返回以下内容:

2013年1月4日

2013年12月4日

它正在切换月和日。我希望它回归:

2013年4月1日

2013年4月12日

有没有人有任何想法?

3 个答案:

答案 0 :(得分:7)

使用DateTime对象,让php了解您将日期传递给它的格式。

$rpt_from_date = DateTime::createFromFormat('d/m/Y', $_GET["from_date"]);
echo $rpt_from_date->format('Y-m-d');

答案 1 :(得分:2)

PHP正在以美国格式(MM / DD / YYYY)读取您的时间字符串,因为您使用的是斜杠。您可以使用短划线来给出时间:index.php?from_date=01-04-2013&to_date=12-04-2013,或者自己转换:

$uktime = implode("-", explode("/", $_GET['from_date']));

答案 2 :(得分:1)

我将提供解决方案,但它没有使用日期函数:

$arr = explode("/",$_GET["from_date"]);
$from_date = $arr[2]."-".$arr[1]."-"$arr[0];

第二个解决方案如下:

$from_date = implode(array_reverse(explode("/",$_GET["from_date"])));