在我的Web應用程序中,我有用戶在簡單的文本框中輸入日期。該輸入(當然是經過消毒處理後)通過strtotime()運行,並添加86399,以使該時間戳寫入一天的結尾(11:59:59)。這是截止日期的目的(所以如果日期的推移,應用程序引發的標誌)3月14日不是86400秒長?
對於我測試,它的工作的日子......
1月5日保存爲1月5日,在的結束天。
3月13日保存爲3月13日
保存爲3月15日
3月14日,無論出於何種原因3月15日,挽救了自己的3月15日。
是3月14日神祕地幾秒鐘短什麼?
更新:感謝oezi的解決方案 - 像魅力一樣工作。根據要求代碼:
舊代碼:
if ($_POST['dateto'] != '') {
$dateto = strtotime(mysql_real_escape_string($_POST['dateto'])) + 86399;
}
新代碼:
# Offset to "end of day"
list($y,$m,$d) = explode('-',date("Y-m-d",strtotime($_POST['dateto'])));
$d++;
$dateto = strtotime($y . '-' . $m . '-' . $d) - 1;
發佈您的代碼。 – Nate 2010-03-09 18:37:52
您可能會有更多運氣解析日/月/年部分,將23:59:59附加到它並轉換爲unix樣式的時間戳。 – meagar 2010-03-09 18:40:10
謹防三月的伊德斯! – 2010-03-09 18:48:46