【发布时间】:2012-07-02 20:01:36
【问题描述】:
我在使用 mktime 函数时遇到了一个有趣的问题。我之前查看了此处提供的解决方案,但似乎都没有得到解决或帮助(strotime 不会改变我看到的结果)。
我有一份月度报告,我正在努力为我的用户制作尽可能不出错的报告,所以我只要求一个月和一年。我将在代码中提供报告的最佳日期。
我的表单有一个月份的下拉选项,月份的值是两位整数(01、02 等)。年份为四位数字,由用户手动填写。
在 2038 年之前,一切都很好...我知道,我知道,这还有很长的路要走,但这个项目应该有 20 年的范围,所以在过去的两年里,我正在运行进入问题。
这是我从表单中接收信息的方式:
$month = filter_var($_POST["month"], FILTER_SANITIZE_NUMBER_INT);
$year = filter_var($_POST["year"], FILTER_SANITIZE_NUMBER_INT);
然后,我使用 mktime 将月份和年份与我的日期(27 日)结合起来: $timeStamp = mktime(0,0,0,$month,27,$year);
然后我将它分配给 MySQL 喜欢的日期形式的变量: $reportdate = date('Y-m-j',$timeStamp);
我已经回显了 $month 和 $year 的结果,它们的显示是正确的,但是当我回显 $reportdate 时,它总是显示 12/31/1969。
03
2038
1969-12-31
我选择哪个月份并不重要。 2037 年 12 月的报告完美无缺,除此之外的任何事情都失败了。
这是可以修复的,还是我只能说这就是 cookie 崩溃的方式...?
【问题讨论】: