2011-02-06 125 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);