早于x的javascript unix时间戳

早于x的javascript unix时间戳,javascript,unix-timestamp,Javascript,Unix Timestamp,我需要澄清我对unix时间戳的一个假设,然后再去做一些扰乱我的应用程序流程的事情,我根本无法想象这些数字,我不想做相反的事情 这里有一个关于php的问题,但我在javascript中找不到 我的数组将由我的应用程序像这样构建 var list=[ ['name0',1424300986716,1424301040055,1424301049633], ['name1',1424300998116,1424301019372,1424301059418], ['name2',1424301009

我需要澄清我对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)对时间值使用相同的历元,但是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;
然后进行比较(两者相同):

这是一个递减循环,所以你会得到24小时后的最后一个值,而不是第一个。要获得第一个:

for (var i=0, iLen=list.length; i<iLen; i++) {
    if ((list[i][column] < then) {
      return i;
    }
}

for(var i=0,iLen=list.length;i“我想确定第二列时间戳是否有一个超过24小时长的”–这没有意义,一个时间戳怎么可能“超过24小时长”?(从技术上讲,对于纪元后超过一天的日期,所有unix时间戳都“超过24小时长”,但这将是一种奇怪的锁定方式。)减去
86400
值的错误之处当然是JavaScript的
Date
对象的操作时间是毫秒,而不是秒……因此,从当前时间戳中减去的时间仅为84.6秒,而不是秒正如你所想,“一整天的时间值几秒钟”。哈哈!!砸了它…我不明白你在第一次评论中的意思。比如说,如果我的应用程序在一天半之前在列表中保存了一个时间戳,那么这个时间戳肯定是“超过24小时的时间戳”,那么在超过24小时之前就更准确了,而不是“很长”。我已经更新了,谢谢。为了让事情更清楚。如果你能回答我,我会接受。所以最安全的赌注是25小时,实际上是(3600*1000)*25不,最安全的赌注是使用
setDate
,这使日期对象自己考虑到了这一点。它非常简单,如
var d=new Date;d.setDate(d.getDate()-1)
–您有“昨天这个时间”。(它会自动处理所有“边界”,如从2月1日到1月31日等)。顺便说一句,夏时制是根据国家以外的各种行政区域来执行的,如州、地区、县等。@CBroe这取决于OP是否需要“昨天同一时间”或提前24小时;-)
while(i--){
for (var i=0, iLen=list.length; i<iLen; i++) {
    if ((list[i][column] < then) {
      return i;
    }
}