早于x的javascript unix时间戳

javascript unix timestamp older than x

本文关键字:unix 时间戳 javascript 早于      更新时间:2024-01-06

在我去做一些扰乱应用程序流程的事情之前,我需要澄清我用unix时间戳做的一个假设,我根本无法可视化这些数字,我不想做相反的事情。。

这里有一个关于php的问题,但我在javascript 中找不到

如何检查时间戳是否为一小时?

我的阵列将由我的应用程序构建,如

var list=[
['name0',1424300986716,1424301040055,1424301049633],
['name1',1424300998116,1424301019372,1424301059418],
['name2',1424301009043,1424301030315,1424301059418]
//...
];

我想确定第二列时间戳是否有一个超过24小时

长的旧的(这些都不是我现在刚做的),我需要它来获得第一个不是最旧的时间戳,并返回数组索引

如果我进行这个测试,我会更加困惑,因为我在意大利,我认为有些东西与时区或时钟有关,或者我对有错误的想法

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)使用相同的epoch作为时间值,但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;
    }
}

这样,如果在比较时间之前没有时间,函数将返回undefined。在OP中,如果找不到合适的时间,它将返回-1。