【问题标题】:Calendar script setting incorrect dates (day minus one)?日历脚本设置不正确的日期(天减一)?
【发布时间】:2011-05-23 06:53:49
【问题描述】:

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

客户端代码是:

<script>

DateInput('publicationDate', true, "YYYY-MM-DD", <?php echo $results['article']->publicationDate ? "'".date("Y-m-d", $results['文章']->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);
        }
    }

有人知道是什么原因造成的吗?是否可能与我在配置文件中设置的时区(美国/多伦多)有关?

【问题讨论】:

  • 脚本代码看起来不像是有效的 javascript。你从客户端得到什么?
  • 抱歉,忘记转义 php 标签 - 谢谢。

标签: php javascript forms date calendar


【解决方案1】:

尝试将 mktime 中的时间设置为 noon 或其他时间,而不是 00:00:00 - 无论如何,您都应该明确声明时区,这是一种良好的做法。如果它一直是一天,那么您绝对可以按照@diEcho 的建议在 mktime 语句中执行 $d+1 (但您说它是过期的日期,而不是月份,我相信日期是 1-indexed不是 0 - 但如果它一直是错误的,你可以让它一直固定)。

【讨论】:

  • 谢谢,我将 mktime 设置为中午,它运行良好!你知道为什么吗? mktime() 和 date() 是否以不同的方式解释天之间的界限?
  • 是的,完全正确 - 我已经看到 23:59:59 与 00:00:00 的行为不同 - 我只是认为无论您的环境如何,中午都是完全明确且不可能被误解的认为。 :)
【解决方案2】:

可能是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

【讨论】:

  • 谢谢,但是月份显示得很好,我正在使用 PHP 而不是 JavaScript 获取和设置月份。
猜你喜欢
  • 1970-01-01
  • 2011-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 2012-11-12
  • 1970-01-01
  • 2020-12-23
相关资源
最近更新 更多