我可以在這兩種情況下,如下相約對象從字符串:PHP日期時間字符串分化
$dt = strtotime("2013-04-19 17:00:00");
//or
$dt = strtotime("10 hours");
我需要一種方法,讓我可以在這兩個日期類型之間的區別,無論是相對還是絕對數據字符串。
任何可能的解決方案或線索請嗎?謝謝。
我可以在這兩種情況下,如下相約對象從字符串:PHP日期時間字符串分化
$dt = strtotime("2013-04-19 17:00:00");
//or
$dt = strtotime("10 hours");
我需要一種方法,讓我可以在這兩個日期類型之間的區別,無論是相對還是絕對數據字符串。
任何可能的解決方案或線索請嗎?謝謝。
你可以使用不同的第二參數strtotime。
if(strtotime($val) == strtotime($val, 0)){
//date is absolute
} else {
// date is relative
}
2013-04-19 17:00:00
永遠是2013-04-19 17:00:00
無論何時開始時間的。
的10 hours
結果將取決於什麼的現在值
偉大的解決方案,我想,謝謝:) – Rana
嗨,只是另一個問題。如果我使用strtotime(「16:00:00」,0),結果是1970年代的16:00:00,當然,「16:00:00」應該是一個絕對時間,今天的時間,對吧?你有什麼建議可以從中恢復?謝謝。 – Rana
0作爲第二個參數是unix時代(1969年12月31日12:00),如果你想要相對於今天的日期,那麼就省略最後一個參數。 '的strtotime( 「十六點00分00秒」); – Orangepill
這不完全清楚自己想要什麼,但如果strtotime()
功能並不能幫助一個簡單的正則表達式可以工作:
$regex = "/^\d{1,2} hours$/";
$type = (preg_match($dt, $regex) ? "relative" : "absolute");
只是表現了我的頭頂部,它可以被提煉了很多更好((hours|minutes|seconds)
什麼的)。
還值得注意的是,這種定製是典型的糟糕設計。 strtotime()
聽起來像是正確的答案。
我在印象之下@Rana正在尋找一種方法來知道在* strtotime()被使用後,初始字符串*是*絕對還是相對*(這可能不可能) –
感謝steve for the線索。然而,最後我用正則表達式來匹配日期而不是像「/(\ d {2,4}) - (\ D *) - (\ d {2})/」這樣的時間,並且看起來正在工作。 – Rana
*的strtotime()*可能會有所不同? –
我有點困惑的問題,但如果你正在尋找一種方式來知道它的相對與否,你可以使用一些正則表達式 –
區分需要使用正則表達式的兩個不同的輸入值。 –