2009-11-23 87 views
0

得到關於PHP日期函數的一些問題....這不用..PHP的日期功能

我使用jQuery的日期選擇器,以得到其格式爲「日/月/年」的用戶的日期。例如。 2009年11月23日是23/11/2009。

而操縱這是php我用下面的代碼...

我日期字符串存儲在變量$日期

$dateOf = date ('(d-m-Y)', strtotime($date)); 

我得到的問題是,當我通過之日起字符串到strtotime函數,它將表示月份的數字作爲表示日期的數字。

如: 當我給日期24/12/2009 的strtotime將其作爲2009/12/24

我不能讓我在做什麼錯在這裏...將如果有人高興清除這件事....

感謝和問候

回答

1

在PHP端,您可以通過此修復程序:

$date = "24/12/2009"; 
$date = preg_replace('/^(\d{1,2})\/(\d{1,2})\/(\d{2,4})$/','\2/\1/\3', $date); 

$dateOf = date ('(d-m-Y)', strtotime($date)); 

這只是交換了第一的位置,第二場比賽以24/12/2009並使其12/24/2009

編輯:

沒有正則表達式:

$date = "24/12/2009"; 
$date = explode('/', $date); 
$date = implode('/', array($date[1], $date[0], $date[2])); 

$dateOf = date ('(d-m-Y)', strtotime($date)); 
+0

很酷的工作... :-) 有沒有辦法沒有正則表達式...? – SpikETidE 2009-11-23 06:04:01

+0

我更新了我的答案以顯示替代方案。仍然看起來像一個解決方法,是吧? – 2009-11-23 06:08:30

+0

兩者都很好...沒有任何反對正則表達式...! 我以前使用過這種爆炸技術,但我認爲php,它很酷,它將包含在日期函數之一中,爲我們節省了額外的代碼......! 謝謝大家,寶貴的時間和建議... – SpikETidE 2009-11-23 07:03:27

1

documentation

的函數需要一個包含美國英語DA字符串te格式

在美國,月份必須在日期之前,例如, MM/DD/YYYY

這裏有沒有正則表達式解決方法:

$date = explode('/', $date); 
$dateOf = date('(d-m-Y)', strtotime($date[1].'/'.$date[0].'/'.$date[2])); 
+0

對不起它「是」的功能,但它的貶值,如果你AREN不使用正則表達式,'爆炸'是首選的方法。 – 2009-11-23 06:11:11

0

strtotime解析英語日期 這裏是展示如何做到這一點的例子:

<html> 
<head> 
<title>Php Date Function</title> 
<script type="text/javascript" src="jquery-1.3.2.min.js"></script> 
<script type="text/javascript" src="jquery.ui.all.packed.js"></script> 
<link rel="stylesheet" src="themes/default/ui.all.css"/> 
<script type="text/javascript"> 
jQuery(document).ready(function($) { 
    $('#dpicker').datepicker({ 
     dateFormat: "dd/mm/yy" 
    }); 
}) 
</script> 
</head> 
<body> 
    <form action="#" method="POST"> 
     <input size="25" readonly="readonly" type="text" value="" id="dpicker" name="dpicker" /> 
     <br/> 
     <input type="submit" id="validBtn" value="OK" name="valid" /> 
    </form> 
    <div> 
    <?php 
     $d = (isset($_POST['dpicker']) ? $_POST['dpicker'] : null); 
     if ($d) { 
      $ds = explode("/", $d); 
      $dte = date('(d-m-Y)', mktime(0, 0, 0, $ds[1], $ds[0], $ds[2])); 
      echo '<p>Date: ' . $dte . '</p>'; 
     } 
    ?> 
    </div> 
</body> 
</html>