任何人都可以得到我隱藏字符串中時間戳的代碼。 我用這個代碼從字符串獲取日期 假設從字符串中刪除時間戳
$date_string = "02/06/2011 11:00 am - 2:00 pm";
$date = strtotime($date_string);
$date = date('m/d/y', $date);
但出來把我得到的是這樣的
1/1/70
請建議我可以實現更好的方法這個工作 我想讓它顯示像
02/06/2011
任何人都可以得到我隱藏字符串中時間戳的代碼。 我用這個代碼從字符串獲取日期 假設從字符串中刪除時間戳
$date_string = "02/06/2011 11:00 am - 2:00 pm";
$date = strtotime($date_string);
$date = date('m/d/y', $date);
但出來把我得到的是這樣的
1/1/70
請建議我可以實現更好的方法這個工作 我想讓它顯示像
02/06/2011
如果你正在尋找的日期已經是字符串中,所有你想要做的是去除時間範圍內,你不需要任何日期操作。刪除空格後的所有內容(假設date_string
的格式保持一致)。
$date_string = "02/06/2011 11:00 am - 2:00 pm";
$date = explode(" ",$date_string);
echo $date[0];
或者更簡單(但未經測試)
echo strtok($date_string," "); //http://codepad.org/Or1mpYOp
$date = strtotime($date_string);
$date = getdate($date);
$date = $date['mon'] . '/' . $date['mday'] . '/' . $date['year']
將日期返回爲'1/1/1970' – 2010-11-02 09:33:07
此解決方案適用於我。 – 2013-12-17 15:56:36
意識到這是因爲我使用了一個真實日期字符串,而不是日期範圍字符串中提供的問題 – 2013-12-17 16:14:53
如果02/06/2011 11:00 am - 2:00 pm
是什麼得到顯示,您顯然顯示$date_string
而不是$date
,因爲strtotime('02/06/2011 11:00 am - 2:00 pm');
返回布爾值false,其中date('m/d/y', $date)
將轉換爲01/01/1970
。
嘗試這樣的事情
$date_string = "02/06/2011 11:00 am - 2:00 pm";
$date_exploded = explode('-',$date_string);
$date = strtotime($date_exploded[0]);
$date = date('m/d/y', $date);
echo $date;
得到「01/01/70」 – 2010-11-02 09:36:23
不知道爲什麼。在這裏,這個代碼呼應'02/06/11' – Mchl 2010-11-02 11:40:03
撇開的東西是要在日期解析非常錯誤的事實,你需要意識到使用00/00/00 [00]的日期格式是相當模糊的 - 在這樣寫的美國日期格式爲mm/dd/yy [yy] whi在英國它被解釋爲dd/mm/yy [yy]。 strtotime函數不使用區域設置來確定哪個適用,並始終假定前者。
如果我被要求解析這個,我會使用preg來提取日期部分。使用圖案:
/([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{2,4})/
給出了一個陣列
0=> 02/06/2011
1=> 02
2=> 06
3=> 2011
然後使用mktime來生成UNIX timstamp。
其他方法包括使用substr來提取一個固定長度的字符串,或利用空間來獲取單詞。
如果你的字符串已經是日期。
$ date = substr($ records [$ datetime,0,10);
是date_string隱藏嗎?你爲什麼不分享它? – nerkn 2010-11-02 09:20:35
如果您首先添加字符串包含的內容,那將會很好。 – Shikiryu 2010-11-02 09:22:57
,看看你如何輸出最終的$ date值 – heximal 2010-11-02 09:26:24