微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP:帮助这个日期格式

我有一个使用CodeIgniter构建的应用程序.我在sql Server DB中有记录有datetime字段.

我从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

比利

解决方法:

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

根据manual

Note:

Dates in the m/d/y or d-m-y formats
are disambiguated by looking at the
separator between the varIoUs
components: if the separator is a
slash (/), then the American m/d/y is
assumed; whereas if the separator is a
dash (-) or a dot (.), then the
European d-m-y format is assumed.

使用正确的格式就像一个魅力:

// 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐