Javascript:错误的日期计算
因此,我刚刚发布了一个关于此代码的问题(已回答): 现在的问题是,我手机中显示的日期是1969/12/31(甚至不是星期四)Javascript:错误的日期计算,javascript,html,Javascript,Html,因此,我刚刚发布了一个关于此代码的问题(已回答): 现在的问题是,我手机中显示的日期是1969/12/31(甚至不是星期四) 计算上周四日期时我是否做错了什么?您试图仅根据上周四当月的日期设置日期。试着这样做: var daysSinceThursday = (dayofWeek + 3) % 7; var lastThursday = new Date(currentTime.getTime()); lastThursday.setDate(currentTime.getDate() - da
计算上周四日期时我是否做错了什么?您试图仅根据上周四当月的日期设置日期。试着这样做:
var daysSinceThursday = (dayofWeek + 3) % 7;
var lastThursday = new Date(currentTime.getTime());
lastThursday.setDate(currentTime.getDate() - daysSinceThursday);
var dd = lastThursday.getDate();
var mm = lastThursday.getMonth() + 1;
var yyyy = lastThursday.getFullYear();
您试图仅根据上周四当月的日期设置日期。试着这样做:
var daysSinceThursday = (dayofWeek + 3) % 7;
var lastThursday = new Date(currentTime.getTime());
lastThursday.setDate(currentTime.getDate() - daysSinceThursday);
var dd = lastThursday.getDate();
var mm = lastThursday.getMonth() + 1;
var yyyy = lastThursday.getFullYear();
这是因为
.getDate()
返回月份的日期。因此,你是基于一个小于30的序列号来建立你的日期,这甚至不会将你的秒数设置为1以上
使用.setDate()
而不是构建新日期:
date.setDate(date.getDate() - daysSinceThursday);
.setDate()
将修改现有的日期对象,它不会返回新的日期。这是因为.getDate()
返回当月的日期。因此,你是基于一个小于30的序列号来建立你的日期,这甚至不会将你的秒数设置为1以上
使用.setDate()
而不是构建新日期:
date.setDate(date.getDate() - daysSinceThursday);
.setDate()
将修改现有的日期对象,它不会返回新的日期。请注意,在执行此操作后,currentTime
也将设置为last周四,因为last周四
和currentTime
都引用相同的date
对象。要在不修改当前时间的情况下设置上周四
,您需要创建一个新的日期
。要复制日期:var lastsurday=新日期(currentTime.valueOf())
。但是,在这种情况下,您实际上不需要副本。你可以这样做:var lastsurday=new Date()
@gilly3:好的观点。我真正想做的是保持OP的其余代码完好无损,但是如果在上周四修改日期后访问currentTime
,那么它就不正确了。我已经更新了代码和fiddle请注意,在执行此操作后,currentTime
也将设置为last Thready,因为LastThready
和currentTime
都引用相同的Date
对象。要在不修改当前时间的情况下设置上周四
,您需要创建一个新的日期
。要复制日期:var lastsurday=新日期(currentTime.valueOf())
。但是,在这种情况下,您实际上不需要副本。你可以这样做:var lastsurday=new Date()
@gilly3:好的观点。我真正想做的是保持OP的其余代码完好无损,但是如果在上周四修改日期后访问currentTime
,那么它就不正确了。我已经更新了密码和小提琴