在我的 Web 应用程序中,我让用户在简单的文本框中输入日期。该输入(当然是经过清理之后)通过 strtotime() 运行,并向其中添加 86399,以使该时间戳成为所写入的当天的结束时间 (11:59:59)。这是出于截止日期的目的(因此,如果日期已过,应用程序会提出一个标志)
在我测试的那几天里,它有效......
1 月 5 日保存为 1 月 5 日,即当天结束时。
3 月 13 日保存为 3 月 13 日
3 月 15 日保存为 3 月 15 日
3 月 14 日,无论出于什么原因,都被保留为 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;
2010 年 3 月 14 日是美国夏令时开始的日子。因此,如果您按照当地时区进行数学计算,则 3 月 14 日只有 23 个小时。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)