Unix时间戳到indexOf的秒数组

时间:2014-10-19 18:16:48

标签: javascript arrays unix-timestamp

我有一个零的数组,每周都有一个插槽。

Array.prototype.fill=function(with,to){while(to)this[to--]=with;return this;}
var a=[].fill(0,86400);

某事发生在特定的第二天时我想在几周内增加它的数量(在同一个旧数组上反复做这个)我应该看到本周哪里是最活跃的。

如何在任何unix时间戳(+新日期()而非新日期())中找到本周的地点?

例如

+new Date();//1413740295015

哪一部分可以定义/使用当天? (今天是星期天)

我需要找到这一天:分钟,秒,但不是毫秒。

2 个答案:

答案 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