2

我按照以下格式在英国格式的 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

有没有人有任何想法?

4

3 回答 3

7

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

$rpt_from_date = DateTime::createFromFormat('d/m/Y', $_GET["from_date"]);
echo $rpt_from_date->format('Y-m-d');
于 2013-05-07T12:00:04.680 回答
2

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

$uktime = implode("-", explode("/", $_GET['from_date']));
于 2013-05-07T11:57:17.733 回答
1

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

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

第二种解决方案如下:

$from_date = implode(array_reverse(explode("/",$_GET["from_date"])));
于 2013-05-07T12:02:11.290 回答