2014-10-19 2 views
0

У меня есть массив нулей со слотом для каждой секунды недели.Unix timestamp to array of seconds indexOf

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

когда что-то происходит на конкретном втором я хотел бы, чтобы увеличить его количество так в течение многих недель (делать это снова и снова на том же старом массиве), я должен видеть, где в неделю большая активность.

Как найти место в неделю в любой временной отметке времени unix (+ новая Дата() не новая Дата())?

Например

+new Date();//1413740295015 

Какая часть может определимых/используется как день? (сегодня воскресенье)

Мне нужно найти день: час минута, секунда, но не миллисекунды.

+0

вы пытаетесь определить индекс в массиве, с учетом текущей даты? –

+0

Пожалуйста, правильно отформатируйте свой код. – Qix

+0

@adrift да я – 8DK

ответ

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 
1

Это один вкладыш в moment.js:

var secondsSincestartOfWeek = moment().unix() - moment().startOf('week').unix(); 

Если вы можете использовать только ванильный JS, вы должны выяснить, как определить метку времени Unix воскресенье текущей недели , и вычесть это из текущей метки времени. Moment.js является открытым исходным кодом, поэтому вы можете видеть, как они это делают.

Кстати, это выглядит как ваш массив должен иметь 604800 элементы, а не 86400.

+0

вы правы мой размер массива за минуты lol не секунды спасибо +1 – 8DK