Php 日历脚本设置的日期不正确(天减一)?
我使用Jason Moon允许用户设置事件的日期。虽然这在一年和一个月内都很好,但我在设置正确的日期时遇到了问题。它一致地将事件日期设置为用户选择的前一天;即使这意味着回到上个月(8月1日变为7月31日),也会发生这种情况。我搞不懂这是为什么或者是怎么回事 客户端代码为:Php 日历脚本设置的日期不正确(天减一)?,php,javascript,forms,date,calendar,Php,Javascript,Forms,Date,Calendar,我使用Jason Moon允许用户设置事件的日期。虽然这在一年和一个月内都很好,但我在设置正确的日期时遇到了问题。它一致地将事件日期设置为用户选择的前一天;即使这意味着回到上个月(8月1日变为7月31日),也会发生这种情况。我搞不懂这是为什么或者是怎么回事 客户端代码为: DateInput('publicationDate',true,“yyyyy-MM-DD”,“publicationDate?”)。date(“Y-m-d”,“$results['article]->publication
DateInput('publicationDate',true,“yyyyy-MM-DD”,“publicationDate?”)。date(“Y-m-d”,“$results['article]->publicationDate)。”:“?>)
而我能想象的导致此错误的唯一服务器端代码是:
// 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);
}
}
有人知道这是什么原因吗?它是否可能与我在配置文件(美国/多伦多)中设置的时区有关?如果是,则可能是月份的问题,解决方案如下:
getMonth
返回的值是一个介于0和11之间的整数。0对应于1月,1对应于2月,依此类推
因此,要获得当前月份,您始终需要编写+1
像这样
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1;//January is 0!
尝试将mktime中的时间设置为中午或其他时间,而不是00:00:00——无论如何,您都应该明确声明时区,这是一种良好的做法。如果它始终是一天,您肯定可以按照@diEcho的建议在mktime语句中执行$d+1(但您说是日期,而不是月份,我相信日期是1索引的,而不是0-但是如果它始终是错误的,您可以使它始终是固定的)。脚本代码看起来不像有效的javascript。你在客户端得到了什么?抱歉,忘了转义php标记-谢谢。谢谢,我将mktime设置为中午,工作正常!你知道为什么吗?mktime()和date()对日与日之间的界限有不同的解释吗?是的,没错-我看到23:59:59与00:00:00的表现不同-我只是觉得中午是完全明确的,不可能被误解,无论你的环境如何想。:)谢谢,但是这个月显示的很好,我使用PHP而不是JavaScript来获取和设置这个月。