2011-02-06 123 views
2

我有一個應用程序,我正在與CodeIgniter建設。我在具有日期時間字段的SQL Server數據庫中有記錄。PHP:這個日期格式化幫助

我從輸入到m/d/Y文本框中的日期查詢這些記錄。這對應於數據庫中的日期格式。

不幸的是,我在英國!所以我想輸入類似d/m/Y的日期。所以我需要捕獲它,格式化爲適當的格式,然後驗證它。

下面是使用到的格式代碼:

$datestring = "%m/%d/%Y"; 
    if(isset ($_POST['from_date']) AND isset ($_POST['to_date'])){ 
     $from = mdate($datestring, strtotime($_POST['from_date'])); 
     $to = mdate($datestring, strtotime($_POST['to_date'])); 

我使用mdate從CI日期幫手,但它幾乎是相同的日期()我想。

如果我輸入的數據13/12/2010然後發佈形式和轉儲談到新的日期作爲出

string(10) "02/06/2011" 

你怎麼發生的呢?

有人可以伸出援手嗎? :d

比利

回答

4

答案是,歐洲日期格式使用破折號,而不是斜槓。

按照manual

注:

日期在M/d/y或DMY格式 是通過查看各種 部件之間的 隔板消除歧義:如果分離是斜槓(/) ,則假設美國m/d/y爲 ;而如果分隔符是 短劃線( - )或點(。),則假定歐洲d-m-y格式爲 。

使用正確的格式就像一個魅力:

// American format 
// 

$_POST['from_date'] = "02/06/2011";  
$yankeeTimestamp = strtotime($_POST['from_date']); 

// European format 
// 

$_POST['from_date'] = "06-02-2011";  
$euroTimestamp = strtotime($_POST['from_date']); 

echo date("m/d/Y", $yankeeTimestamp); // returns 02/06/2011 
echo date("m/d/Y", $euroTimestamp); // returns 02/06/2011 
+0

由於這是一個光輝的榜樣 – iamjonesy 2011-02-06 16:19:51

1

我會做的是「/」爆炸的日期和新的日期與mktime:

$from = explode('/', $_POST['from_date']); 
$from = mktime(0, 0, 0, $from[1], $from[0], $from[2]); 
$from = mdate($datestring, $from);