PHP:帮助这个日期格式

时间:2011-02-06 15:47:30

标签: php datetime codeigniter date-format

我有一个使用CodeIgniter构建的应用程序。我在SQL Server数据库中有记录,其中包含日期时间字段。

我在输入m / d / Y文本字段的日期查询这些记录。这对应于db中的日期格式。

不幸的是我在英国!所以我想输入日期,如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']));

我正在使用CI日期助手中的mdate,但我认为它与date()几乎相同。

如果我输入数据13/12/2010,则发布表单并转储它出现的新日期

string(10) "02/06/2011"

这是怎么发生的?

有人能伸出援助之手吗? :d

比利

2 个答案:

答案 0 :(得分:4)

答案是欧洲日期格式使用短划线而不是斜线。

根据manual

  

注意:

     

日期为m / d / y或d-m-y格式   通过观察来消除歧义   各种之间的分隔符   组件:如果分隔符是   斜线(/),然后是美国的m / d / y   假定;而如果分隔符是a   破折号( - )或点(。),然后是   假设欧洲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

答案 1 :(得分:1)

我要做的是用'/'爆炸日期并用mktime创建一个新日期:

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