2013-05-07 60 views
2

我傳遞日期的URL在英國的格式按照以下幾點:傳遞一個英國日期在URL

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

的日期範圍爲2013年4月1日至4月12日2013年

然後我使用下面的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日

有沒有人有什麼想法?

+0

'的strtotime()'認爲'/'分離日期爲美國格式。您的原始網址需要使用例如'to_date = 12-04-2013' – Clive 2013-05-07 11:53:09

+0

這與網址無關,只是「strtotime」如何解析日期。這已經被多次回答...... – deceze 2013-05-07 11:55:07

+0

''explode' by'/'然後自己解析它,如果你給的格式不能被'strtotime'識別,那麼你就無能爲力了。 – 2013-05-07 11:55:39

回答

2

由於您正在使用斜槓,PHP正在以美國格式(MM/DD/YYYY)讀取您的時間字符串。你可以使用破折號給予時間:index.php?from_date=01-04-2013&to_date=12-04-2013,或自己進行轉換:

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

很好,謝謝Pietu1998 – user2281899 2013-05-07 12:20:37

7

使用DateTime對象,讓PHP瞭解以哪種方式你傳遞日期吧。

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

完美答案,謝謝!! – 2013-08-12 14:05:11

1

我將提供解決方案,但它未使用的時間函數:

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

第二種解決方案是如下:

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