我正在使用 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/