<?php
// Convert MMDDYY to YYYY-MM-DD date format to be INSERTed
// into MySQL TABLE.
// If it can't convert the data because of an error, it returns 0000-00-00.
date_default_timezone_set('America/New_York');
function date_convert($date_input) {
try {
$date = new DateTime($date_input);
$date_processed = $date->format('Y-m-d');
} catch(Exception $e) {
echo "Wrong date format $date_input" . "'n";
$date_processed = "0000-00-00";
}
return $date_processed;
}
// MMDDYY (January 1, 2000)
$TRANSACTION_DATE_MMDDYY_raw = "010100";
echo date_convert($TRANSACTION_DATE_MMDDYY_raw) . "'n";
?>
输出: 2013年06月28
日我预计它会返回 2000-01-01,但它返回今天的日期。我错过了什么?我该如何解决这个问题?谢谢!
您应该使用 createFromFormat
方法。请参阅:http://us2.php.net/manual/en/datetime.createfromformat.php
PHP无法知道你的日期格式像MMDDYY。有两种方法可以解决此问题:
- 使用"有效格式"之一。你可以改变你的输入值,或者用一些字符串函数或正则表达式将其解析为有效的格式。
- 使用 DateTime 类附带的静态 createFromFormat 方法。
由于我认为更改输入不是一种选择,并且解析输入似乎有点牵强,因此使用第二种方法在这里似乎是最合适的,并且会导致更改:
$date = new DateTime($date_input);
进入这个:
$date = DateTime::createFromFormat('mdy', $date_input);
您指定的格式无法转换/无法识别为正确的格式。试试'2000-01-01'