PHP:帮助处理此日期格式

标签 php datetime codeigniter date-format

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

我正在根据 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']));

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

如果我输入数据 2010 年 12 月 13 日,然后发布表单并转储新日期,结果为

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

关于PHP:帮助处理此日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4914296/

相关文章:

php - 如何检查时间数组的单个值是否在另一个时间的 +/- 15 分钟范围内

php - laravel Eloquent 查询关系

php - STRTOTIME 查找当前周、星期一和星期六的日期,PHP

Java - 创建没有时区的日历

php - Codeigniter - 当 URL 以斜杠结尾时,相对 URL 停止工作?

php - Codeigniter 从表中选择单行

PHP:检测数组中特定的元素序列

javascript - 在 JavaScript 中从工作日获取下一个日期

Perl 日期时间减去_日期时间_绝对有趣的行为

php - 更新查询增量字段加 1 codeigniter