在URL中传递英国日期


Passing a UK date in a URL

我在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-01-04

2013-12-04

它在转换月份和日期。我想让它返回:

2013-04-01

2013-04-12

有人有什么想法吗?

使用DateTime对象,让php理解你传递日期的格式。

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

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

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

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

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

第二种解决方案如下:

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