考慮以下字符串:PHP:轉換日期字符串到Unix時間戳
- 11年1月1日
- 1/1/11
- 2011/1/1
- 1月1日/ 2011
- 2011年1月1日
- 等
如何轉換ŧ這是一個Unix時間戳。請注意,在大多數情況下,這將採用帶有各種分隔符的dd mm yyyy
格式。
考慮以下字符串:PHP:轉換日期字符串到Unix時間戳
如何轉換ŧ這是一個Unix時間戳。請注意,在大多數情況下,這將採用帶有各種分隔符的dd mm yyyy
格式。
看strtotime
,strptime
或DateTime
類。
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']);
}
你可能尋找strtotime function。
但是,作爲一個警告,它會將每一個可能的字符串格式轉換爲unix時間戳(epoch),因爲很難明確地將每個字符串解析爲日期時間。
$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;
您的正則表達式採用dd-mm-yyyy格式,我不確定它的格式。 – StackOverflowNewbie
@StackOverflowNewbie - 您的問題說:「請注意,在大多數情況下,這將採用帶有各種分隔符的dd mm yyyy格式。」所以我採用了這種格式,但是你可以添加'elseif'語句來檢查不同的格式,並使'regex'更加具體(即,而不是\ d +)使用描述0-12的月份和0 -31天)。當然,在1/2/13的情況下,除非你知道格式,否則不可能知道哪個是哪個。 –