我有一個應用程序使用time()
來記錄主題發佈的時間。我已經這麼做了很長時間,而且我唯一遇到的問題是時間總是停止一個小時(主要是我從未考慮過的DST問題)。time()到DateTime
我想切換到DateTime
方法,因爲我也切換到Twig,它在設置時區時使用該日期格式。
但從我所看到的,你不能使用時間戳來解析日期。我的問題是,如何輸入日期並解析它,如果它不是time()
,他們在尋找什麼格式?
我有一個應用程序使用time()
來記錄主題發佈的時間。我已經這麼做了很長時間,而且我唯一遇到的問題是時間總是停止一個小時(主要是我從未考慮過的DST問題)。time()到DateTime
我想切換到DateTime
方法,因爲我也切換到Twig,它在設置時區時使用該日期格式。
但從我所看到的,你不能使用時間戳來解析日期。我的問題是,如何輸入日期並解析它,如果它不是time()
,他們在尋找什麼格式?
聽起來它的服務器的默認時區是UTC。我建議您嘗試將的php.ini
設置更改爲適用於DST的設置。這意味着當您使用date()
時,將會爲DST正確調整結果輸出。
不能使用時間戳來解析
有一個辦法,如果你的PHP版本> = 5.3日期:
$time = time();//or other time
$date = DateTime::createFromFormat('U',$time);
但事實上它由於DateTime並不依賴它,因此使用時間戳有點奇怪。如果日期是英語或「法語」(如d/m/y
),則可以使用日期時間構造函數直接解析日期字符串。您也可以創建自定義格式。
你怎麼輸入日期和解析它,什麼格式,他們找如果不是時間()
如果是AA標準格式日期:
$date = new DateTime($yourString);//would throw an exception if the format is wrong
如果它是一個自定義格式,如DD/MM/YYYY 14h32mins
$date = DateTime::createFromFormat('d/m/Y h\hi\m\i\n\s',$yourString);
if($date === false){//if format does not fit
exit('Your wrong !');
}
我有一個應用程序使用time()來記錄主題發佈的時間。
非常不好的做法。在MySQL中,您有DateTime格式(每個關係數據庫系統都有自己的等價物)來存儲日期時間,並且完全兼容PHP中的DateTime構造函數以便遷移到它(使用FROM_TIMESTAMP更改爲DateTime)。
它遵循,直到第二段的一半..那麼它不是很清楚.. – amosrivera
我假設這是數據庫驅動(考慮到你提到的節省話題創建時間),所以我最大的問題是 - 爲什麼aren'你使用數據庫的集成時間嗎? (讓數據庫處理時間,PHP應該只將它轉換爲用戶的本地時間)。 –
我該怎麼做? – Eman