Чтобы убедиться, что вы получите правильный результат, вам нужно либо DateTime :: createFromFormat () , если вы используете PHP> = 5.3.0, либо strptime () сPHP> = 5.1.0, где вы можете указать формат ввода.
Хотя, если вы все еще хотите разрешить свободный формат там, вы можете захотеть сделать костыль, который будет проверять регулярное выражение для этого конкретного формата и использовать одиниз них только для американского м / д / г, что-то вроде:
function parsedate($date) {
if (preg_match('#\d{1,2}/\d{1,2}/\d{2,4}#', $date)) {
$parsed = strptime($date, '%m/%d/%Y');
return mktime(0, 0, 0, $parsed['tm_mon'], $parsed['tm_mday'], 1900+$parsed['tm_year']);
// 'tm_year' is years since 1900
} else {
return strtotime($date);
}
}
Это все еще опора, но я не вижу более чистого пути.