我正在使用Jason Moon的日历脚本来允许用户设置事件的日期。虽然这在年份和月份工作正常,但我在让它设置正确的日期时遇到了问题。它始终将事件的日期设置为用户选择的前一天;即使这意味着回到上个月(8 月 1 日变为 7 月 31 日),也会发生这种情况。我不知道这是为什么或做什么!
客户端代码为:
DateInput('publicationDate', true, "YYYY-MM-DD",
<script>
<
?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!