日历脚本设置不正确的日期(日减1)?

时间:2011-05-23 06:53:49

标签: php javascript forms date calendar

我正在使用Jason Moon的Calendar Script来允许用户设置事件的日期。虽然这对年和月都很好,但我在设置正确的日期时遇到了问题。它始终将事件的日期设置为用户选择的前一天;即使这意味着回到上个月(8月1日变为7月31日),也会发生这种情况。我无法弄清楚为什么会这样做或正在做什么!

客户端代码是:

  

<script>

     

DateInput('publicationDate',true,“YYYY-MM-DD”,<?php echo $ results ['article'] - &gt; publicationDate?“'”。date(“Ymd”,$ results ['article'] - &gt; publicationDate)。“'”:“”?&gt;);

     

</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);
        }
    }

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

2 个答案:

答案 0 :(得分:1)

尝试将时间设置为mktime或中午而不是00:00:00 - 你应该明确地声明一个时区,这是一种很好的做法。如果它总是一天出去,你肯定可以按照@diEcho的建议在mktime语句中做$ d + 1(但是你说这是出日期,而不是月份,我相信日期是1索引的不是0 - 但如果它一直是错的,你可以使它一直固定)。

答案 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!

Reference

one more