我有一个零的数组,每周都有一个插槽。
Array.prototype.fill=function(with,to){while(to)this[to--]=with;return this;}
var a=[].fill(0,86400);
当某事发生在特定的第二天时我想在几周内增加它的数量(在同一个旧数组上反复做这个)我应该看到本周哪里是最活跃的。
如何在任何unix时间戳(+新日期()而非新日期())中找到本周的地点?
例如
+new Date();//1413740295015
哪一部分可以定义/使用当天? (今天是星期天)
我需要找到这一天:分钟,秒,但不是毫秒。
答案 0 :(得分:2)
这是moment.js中的单行:
var secondsSincestartOfWeek = moment().unix() - moment().startOf('week').unix();
如果您只能使用vanilla JS,那么您必须弄清楚如何确定当周星期日的Unix时间戳,并从当前时间戳中减去该时间戳。 Moment.js是开源的,所以你可以看到他们是如何做到的。
顺便说一下,你的数组看起来应该有604800个元素,而不是86400个元素。
答案 1 :(得分:1)
如果您在给定当前Date
的情况下尝试在数组中找到索引,则可以执行以下操作,确定一周的开始(周日午夜),然后执行自此之后经过的秒数时间(一周604,800秒)。
function indexFromDate(date) {
var start = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay());
return Math.floor((date - start) / 1000);
}
console.log(indexFromDate(new Date(2014, 9, 19, 0, 0, 0, 0))); // 0
console.log(indexFromDate(new Date(2014, 9, 25, 23, 59, 59, 999))); // 604799