javascript 早于 x 的 unix 时间戳
javascript unix timestamp older than x
我需要先澄清一下我用 unix 时间戳所做的假设,然后再做一些扰乱我的应用程序流程的事情,我根本无法想象这些数字我不想做相反的事情。 .
这里有一个关于 php 的问题,但我找不到 javascript
的问题
How to check if a timestamp is an hour old?
我的数组数组将由我的应用程序像这样构建
var list=[
['name0',1424300986716,1424301040055,1424301049633],
['name1',1424300998116,1424301019372,1424301059418],
['name2',1424301009043,1424301030315,1424301059418]
//...
];
我想确定时间戳的第二列是否有一个超过 24 小时的 long 旧(none 这些是我现在刚刚制作的) ,我需要它来获得它遇到的第一个不是最旧的和 return 数组索引
如果我 运行 这个测试我会更加困惑,因为我在意大利我认为有些事情与时区或时钟有关,或者我有错误的想法
var now=(+new Date());
var back24hrs=new Date((now-86400));
console.log(now,back24hrs);
// 1424303535659 Thu Feb 19 2015 00:50:49 GMT+0100 (W. Europe Standard Time)
现在是星期四,现在不是 24 小时回来!我看不出我哪里错了..
基本上我的假设是(当前时间 - 24 小时)我认为那部分是正确的但也小于或大于节省的时间?
我正在考虑做这样的事情:
function olderthan24hrs(column){
var hrs24=86400;
var i=list.length;
while(i--){
if((+new Date()-hrs24)>list[i][column]){break;}
}
return i;
}
var choice=olderthan24hrs(2);
但我真的不确定这是否完全正确
JavaScript 的 Date
对象以毫秒为单位运行,而不是秒。
因此,对于 86400
,您只是从当前时间戳中减去 84.6
秒 ,而不是“一整天的秒数”您认为。您需要将该值乘以一千。
(并且减去 86400 秒并不意味着一直都是一天,因为一年中有两天分别长一小时或短一小时,至少在任何有夏令时的国家都是如此。是否是否与您的申请相关,您必须自己决定。)
您已经有了答案,但只是澄清一下:UNIX 和 JavaScript (ECMAScript) 对时间值使用相同的纪元,但是 UNIX 时间值是秒,而 javascript 时间值是毫秒。 24小时有8.64e7毫秒
如果要查看时间是否大于过去的 24 小时,请通过以秒为单位的时间值减去 24 小时的秒数来设置比较值:
// Current time value in seconds
var then = (Date.now()/1000 | 0) - 8.64e4;
但是,这与前一天相关的时间在跨过夏令时边界时将是 +/- 1 小时。
如果您想与昨天的同一时间(比夏令时边界多 23 或 25 小时)进行比较,请使用日期对象并减去一天来创建比较值:
var now = new Date();
var then = +(now.setDate(now.getDate() - 1))/1000 | 0;
然后做比较(两者相同):
if (list[i][column] < then) {
// value is prior to comparison time
}
请注意,存储 then 值比每次迭代都计算它更有效。
您的 while 循环开始:
while(i--){
所以这是一个递减循环,因此您将获得超过 24 小时的最后一个值,而不是第一个。获得第一:
for (var i=0, iLen=list.length; i<iLen; i++) {
if ((list[i][column] < then) {
return i;
}
}
这样,如果在比较时间之前没有更多时间,则函数return未定义。在OP中,如果找不到合适的时间,它将return -1。
我需要先澄清一下我用 unix 时间戳所做的假设,然后再做一些扰乱我的应用程序流程的事情,我根本无法想象这些数字我不想做相反的事情。 .
这里有一个关于 php 的问题,但我找不到 javascript
的问题How to check if a timestamp is an hour old?
我的数组数组将由我的应用程序像这样构建
var list=[
['name0',1424300986716,1424301040055,1424301049633],
['name1',1424300998116,1424301019372,1424301059418],
['name2',1424301009043,1424301030315,1424301059418]
//...
];
我想确定时间戳的第二列是否有一个超过 24 小时的 long 旧(none 这些是我现在刚刚制作的) ,我需要它来获得它遇到的第一个不是最旧的和 return 数组索引
如果我 运行 这个测试我会更加困惑,因为我在意大利我认为有些事情与时区或时钟有关,或者我有错误的想法
var now=(+new Date());
var back24hrs=new Date((now-86400));
console.log(now,back24hrs);
// 1424303535659 Thu Feb 19 2015 00:50:49 GMT+0100 (W. Europe Standard Time)
现在是星期四,现在不是 24 小时回来!我看不出我哪里错了..
基本上我的假设是(当前时间 - 24 小时)我认为那部分是正确的但也小于或大于节省的时间?
我正在考虑做这样的事情:
function olderthan24hrs(column){
var hrs24=86400;
var i=list.length;
while(i--){
if((+new Date()-hrs24)>list[i][column]){break;}
}
return i;
}
var choice=olderthan24hrs(2);
但我真的不确定这是否完全正确
JavaScript 的 Date
对象以毫秒为单位运行,而不是秒。
因此,对于 86400
,您只是从当前时间戳中减去 84.6
秒 ,而不是“一整天的秒数”您认为。您需要将该值乘以一千。
(并且减去 86400 秒并不意味着一直都是一天,因为一年中有两天分别长一小时或短一小时,至少在任何有夏令时的国家都是如此。是否是否与您的申请相关,您必须自己决定。)
您已经有了答案,但只是澄清一下:UNIX 和 JavaScript (ECMAScript) 对时间值使用相同的纪元,但是 UNIX 时间值是秒,而 javascript 时间值是毫秒。 24小时有8.64e7毫秒
如果要查看时间是否大于过去的 24 小时,请通过以秒为单位的时间值减去 24 小时的秒数来设置比较值:
// Current time value in seconds
var then = (Date.now()/1000 | 0) - 8.64e4;
但是,这与前一天相关的时间在跨过夏令时边界时将是 +/- 1 小时。
如果您想与昨天的同一时间(比夏令时边界多 23 或 25 小时)进行比较,请使用日期对象并减去一天来创建比较值:
var now = new Date();
var then = +(now.setDate(now.getDate() - 1))/1000 | 0;
然后做比较(两者相同):
if (list[i][column] < then) {
// value is prior to comparison time
}
请注意,存储 then 值比每次迭代都计算它更有效。
您的 while 循环开始:
while(i--){
所以这是一个递减循环,因此您将获得超过 24 小时的最后一个值,而不是第一个。获得第一:
for (var i=0, iLen=list.length; i<iLen; i++) {
if ((list[i][column] < then) {
return i;
}
}
这样,如果在比较时间之前没有更多时间,则函数return未定义。在OP中,如果找不到合适的时间,它将return -1。