2011-06-28 149 views

回答

25

strtotime,strptimeDateTime類。

strtotime實施例:

$timestamp = strtotime('1/1/2011'); 

每個功能都有它的警告。例如,對於strtotime指出的文檔:在第m

日期/ d/y或DMY格式 是通過查看各種 部件之間的 隔板消除歧義:如果分離器是 斜線( /),則假設美國的m/d/y爲 ;而如果分隔符是 短劃線( - )或點(。),則假定歐洲d-m-y格式爲 。

您還可以使用preg_match捕獲所有3個部分,並使用mktime創建自己的時間戳。

preg_match例子:

if (preg_match('/^(?P<day>\d+)[-\/](?P<month>\d+)[-\/](?P<year>\d+)$/', '1/1/2011', $matches)) 
{ 
    $timestamp = mktime(0, 0, 0, ($matches['month'] - 1), $matches['day'], $matches['year']); 
} 
+0

您的正則表達式採用dd-mm-yyyy格式,我不確定它的格式。 – StackOverflowNewbie

+0

@StackOverflowNewbie - 您的問題說:「請注意,在大多數情況下,這將採用帶有各種分隔符的dd mm yyyy格式。」所以我採用了這種格式,但是你可以添加'elseif'語句來檢查不同的格式,並使'regex'更加具體(即,而不是\ d +)使用描述0-12的月份和0 -31天)。當然,在1/2/13的情況下,除非你知道格式,否則不可能知道哪個是哪個。 –

0

你可能尋找strtotime function

但是,作爲一個警告,它會將每一個可能的字符串格式轉換爲unix時間戳(epoch),因爲很難明確地將每個字符串解析爲日期時間。

3
$to='23.1.2014-18:16:35' 
list($part1,$part2) = explode('-', $to); 
list($day, $month, $year) = explode('.', $part1); 
list($hours, $minutes,$seconds) = explode(':', $part2); 
$timeto = mktime($hours, $minutes, $seconds, $month, $day, $year); 
echo $timeto;