我期待中提取出來的時候這個字符串解析字符串時
Tue, 13 Mar 2012 04:48:34 -0400
我知道的strtotime可以工作,但我對如何只得到04:48:34
從串出我不知道implemation的
感謝
我期待中提取出來的時候這個字符串解析字符串時
Tue, 13 Mar 2012 04:48:34 -0400
我知道的strtotime可以工作,但我對如何只得到04:48:34
從串出我不知道implemation的
感謝
你可以使用date_parse,它以日期/時間部分作爲單獨的元素返回一個數組。然後你可以提取時間部分,例如
$dateString = 'Tue, 13 Mar 2012 04:48:34 -0400';
$dateParts = date_parse($dateString);
$timeString = $dateParts['hour'] . ':' . $dateParts['minute'] . ':' . $dateParts['second'];
或者更好,如果你有PHP5.3,你可以使用DateTime class
$dateString = 'Tue, 13 Mar 2012 04:48:34 -0400';
$date = new DateTime($dateString);
echo $date->format('H:i:s');
優秀!不知道關於DateTime類在PHP 5.3 + – Autolycus 2012-03-13 09:03:24
你會碰巧知道如果使用這個類,我可以找到下一個壁櫥小時。就像在這種情況下,它會是5 – Autolycus 2012-03-13 09:08:40
@Autolycus取決於「下一個最近的小時」的含義。這聽起來像是另一個問題。如果您遇到問題,請隨時發佈併發布另一個問題。 – liquorvicar 2012-03-13 09:27:14
嘗試
echo date('H:i:s',strtotime($str));
也許你可以使用sscanf功能?
這裏的「自制」的解決方案,工作原理:
$r = sscanf ('Tue, 13 Mar 2012 04:48:34 -0400' , '%s %d %s %d %02d:%02d:%02d %d');
if (count($r)==7) {
$hh = intval($r[4]);
$mn = intval($r[5]);
$ss = intval($r[6]);
if (
($hh>=0) && ($hh<=23) &&
($mn>=0) && ($mn<=59) &&
($ss>=0) && ($ss<=59)
) {
/* Time is valid, use it
*/
}
}
不知道,如果存在,可以爲你做到這一點的具體方法,而是把我的頭頂部:
echo date('H:m:s');
這將返回當前小時:分鐘:秒,因爲您沒有傳入Unix時間戳(日期的第二個參數)。 – MetalFrog 2012-03-13 19:21:29
如果時區不是「-0400」,該怎麼辦?你真的只想忽略時區嗎? – 2012-03-13 08:55:38
99.999%的網頁開發人員不關心時區(Autolycus對你沒有任何關係)。他們*可能*只在網站成爲國際時才關心...... – 2012-03-13 09:03:45