日历脚本设置的日期不正确(天减一)


Calendar script setting incorrect dates (day minus one)?

我正在使用Jason Moon的日历脚本来允许用户设置事件的日期。虽然这在年份和月份工作正常,但我在让它设置正确的日期时遇到了问题。它始终将事件的日期设置为用户选择的前一天;即使这意味着回到上个月(8 月 1 日变为 7 月 31 日),也会发生这种情况。我不知道这是为什么或做什么!

客户端代码为:

<script>

DateInput('publicationDate', true, "YYYY-MM-DD", < ?php echo $results['article']->publicationDate ? "'"

.date( "Y-m-d", $results['article']->publicationDate )."'" : " ?>);

</script>

而我能想象到的唯一一点导致此错误的服务器端代码是:

// Parse and store publication date
if ( isset( $params['publicationDate'] ) ) {
        $publicationDate = explode ( '-', $params['publicationDate'] );
        if ( count( $publicationDate ) == 3 ) {
            list ($y, $m, $d) = $publicationDate;
            $this->publicationDate = mktime(0, 0, 0, $m, $d, $y);
        }
    }

有谁知道可能导致这种情况的原因是什么?它可能与我在配置文件中设置的时区(美国/多伦多)有关吗?

尝试将 mktime 中的时间设置为中午或其他时间,而不是 00:00:00 - 无论如何,您都应该明确声明时区,作为很好的做法。如果它始终是一天,您绝对可以按照 @diEcho 的建议在 mktime 语句中执行 $d+1(但您说这是发布的日期,而不是月份,我确实相信该日期是 1 索引而不是 0 - 但如果它始终是错误的,您可以使其始终如一地固定)。

如果是

,则可能是month的问题,则解决方案如下:

getMonth返回的值是介于 0 和 11 之间的整数。0 对应于 1 月,1 对应于 2 月,依此类推。

因此,要获得当前月份,您始终需要写+1

喜欢这个

var today = new Date(); 
var dd = today.getDate(); 
var mm = today.getMonth()+1;//January is 0!

参考

再来一个