既然你不知道日期的格式,那麼你應該使用date_parse
date_parse - 返回有關給定日期
例
print_r(date_parse("23/23/23 00:14:38"));
詳細信息關聯數組
輸出
Array
(
[year] => 2023
[month] => 3 <------------------- Attempts to correct month
[day] => 23
[hour] => 0
[minute] => 14
[second] => 38
[fraction] => 0
[warning_count] => 0
[warnings] => Array
(
)
[error_count] => 1
[errors] => Array
(
[0] => Unexpected character <----- add errors found
)
[is_localtime] =>
)
簡單的類
$date = "23/3/2013 00:14:38";
if (DateTimeParse::createFromString($date) !== false) {
// "valid" date
}
類用於
class DateTimeParse {
public static function createFromString($string) {
$date = date_parse(str_replace("/", "-", $string));
if ($date['error_count'] > 0)
return false;
$date = sprintf("%d-%d-%d %d:%d:%d", $date['year'], $date['month'], $date['day'], $date['hour'], $date['minute'], $date['second']);
return \DateTime::createFromFormat("Y-m-d g:i:s", $date);
}
}
任何機會,以跌停的可能日期字符串變量? – 2013-03-18 07:13:19
@ axel.michel - 我寧可不 – Galen 2013-03-18 07:23:20
如果你不知道格式,那麼你會得到歧義。是1/2/13 2月1日(歐洲格式)還是1月2日(美國格式)?你可以毫不含糊地解決一些問題,比如23/9/13,但是每個月的前12天都是不明確的。這不包括以2位數年份開始的日期:13/1/2 = 2013年1月2日。 – rossum 2013-03-18 13:42:10