date js获取10位时间戳 - 你如何获得JavaScript的时间戳?





js时间戳秒 js获取秒级时间戳 (25)


对于具有微秒分辨率的时间戳,有performance.now

function time() { 
  return performance.now() + performance.timing.navigationStart;
}

例如,这可以产生1436140826653.139 ,而Date.now仅产生1436140826653

如何在JavaScript中获取时间戳?

与Unix的时间戳类似的东西,即代表当前时间和日期的单个数字。 无论是数字还是字符串。




对于lodashunderscore用户,请使用_.now

var timestamp = _.now(); // in milliseconds



var timestamp = Number(new Date()); // current time as number



在写这篇文章时,最重要的答案是9年,从那以后发生了很多变化 - 尤其是,我们几乎普遍支持非hacky解决方案:

Date.now()

如果你想绝对肯定这不会在一些古老的(pre ie9)浏览器中破坏,你可以把它放在支票后面,如下:

const currentTimestamp = (!Date.now ? +new Date() : Date.now());

这将返回自纪元时间以来的毫秒,当然,不是秒。

MDN




console.log(new Date().valueOf()); // returns the number of milliseconds since the epoch




JavaScript中的日期本机对象是我们获取所有时间数据的方式。

在JavaScript中要小心,时间戳取决于客户端计算机设置,因此它不是100%准确的时间戳。 为了获得最佳结果,您需要从服务器端获取时间戳。

无论如何,我的首选方式是使用香草。 这是在JavaScript中执行此操作的常用方法:

Date.now(); //return 1495255666921

在MDN中,它提到如下:

Date.now()方法返回自1970年1月1日00:00:00 UTC以来经过的毫秒数。
因为now()是Date的静态方法,所以总是将它用作Date.now()。

如果您使用的是ES5以下的版本, Date.now(); 不起作用,你需要使用:

new Date().getTime();



除了其他选项,如果你想要一个dateformat ISO,你可以直接得到它

console.log(new Date().toISOString());




一个我还没有看到的

Math.floor(Date.now() / 1000); // current time in seconds

另一个我还没有看到的是

var _ = require('lodash'); // from here https://lodash.com/docs#now
_.now();



短而时髦:

+ new Date()

plus这样的一元运算符会触发Date对象中的valueOf方法,并返回时间戳(不做任何更改)。

细节:

在几乎所有当前浏览器上,您都可以使用Date.now()来获取UTC时间戳(以毫秒为单位) ; 一个值得注意的例外是IE8及更早版本(参见兼容性表 )。

不过,你可以很容易地为此做一个垫片:

if (!Date.now) {
    Date.now = function() { return new Date().getTime(); }
}

要以为单位获取时间戳,您可以使用:

Math.floor(Date.now() / 1000)

或者您也可以使用:

Date.now() / 1000 | 0

哪个应该稍微快一点,但也不太可读(也见这个答案 )。

我建议使用Date.now() (兼容垫片)。 它稍微好一些,因为它更短并且不会创建新的Date对象。 但是,如果您不想要填充程序和最大兼容性,则可以使用“旧”方法以毫秒为单位获取时间戳:

new Date().getTime()

然后您可以将其转换为秒,如下所示:

Math.round(new Date().getTime()/1000)

您还可以使用我们在上面显示的valueOf方法:

new Date().valueOf()

时间戳以毫秒为单位

var timeStampInMs = window.performance && window.performance.now && window.performance.timing && window.performance.timing.navigationStart ? window.performance.now() + window.performance.timing.navigationStart : Date.now();

console.log(timeStampInMs, Date.now());




JavaScript使用自纪元以来的毫秒数,而大多数其他语言使用秒。 您可以使用毫秒,但只要您传递一个值来表示PHP,PHP本机函数可能会失败。 所以要确保我总是使用秒,而不是毫秒。

这将为您提供Unix时间戳(以秒为单位):

var unix = Math.round(+new Date()/1000);

这将为您提供自纪元以来的毫秒数(不是Unix时间戳):

var milliseconds = new Date().getTime();



任何浏览器都不支持Date.now,您可以使用它来获取当前日期时间:

currentTime = Date.now() || +new Date()






我在这个答案中提供了多个解决方案和描述。 如果有任何不清楚的地方,请随时提问
PS:遗憾的是有人将此合并到最佳答案而没有给予信任。

快速又脏的解决方案:

Date.now() /1000 |0

警告 :它可能在2038年中断并且如果你执行|0魔术则返回负数。 使用Math.floor()代替那个时间

Math.floor()解决方案:

Math.floor(Date.now() /1000);

Derek朕会功夫的一些讨厌的选择取自下面的评论这个答案:

new Date/1e3|0

Polyfill得到Date.now()工作:

要在IE中使用它,你可以这样做(来自MDN Polyfill):

if (!Date.now) {
    Date.now = function now() {
        return new Date().getTime();
    };
}

如果您不关心星期/夏令时的年/日,您可以将其剥离并在2038年后使用它:

var now = (function () {
    var year = new Date(new Date().getFullYear().toString()).getTime();
    return function () {
        return Date.now() - year
    }
})();

它的一些输出结果:

new Date()
Thu Oct 29 2015 08:46:30 GMT+0100 (Mitteleuropäische Zeit )
new Date(now())
Thu Oct 29 1970 09:46:30 GMT+0100 (Mitteleuropäische Zeit )

当然它会打破夏令时但是根据你正在构建的内容,如果你需要在int32在2038年中断之后对时间戳进行二进制操作,这可能对你有用。

这也将返回负值,但只有当您运行代码的PC的用户将PC的时钟至少更改为去年12月31日时。

如果您只想知道从代码运行到第一次的相对时间,您可以使用以下内容:

var relativeTime = (function () {
    var start = Date.now();
    return function () {
        return Date.now() - start
    }
})();

如果您正在使用jQuery,您可以使用$.now() ,如jQuery的Docs中所述,这使得$.now()过时,因为$.now()内部执行相同的操作:( (new Date).getTime()

如果你对jQuery的版本感到高兴,请考虑提出this答案,因为我自己并没有找到它。

现在对|0做的一个小小的解释:

通过提供| ,你告诉解释器做二进制OR操作。 位操作需要绝对数字,将十进制结果从Date.now() / 1000转换为整数。

在转换期间,删除小数,导致与使用Math.floor()但使用较少代码的结果相同。

但要注意:它会将64位双精度转换为32位整数。 这会在处理大量数据时导致信息丢失。 由于32位整数溢出,时间戳将在2038年后中断。

有关Date.now更多信息,请Date.now以下链接: MDN




这似乎有效。

console.log(clock.now);
// returns 1444356078076

console.log(clock.format(clock.now));
//returns 10/8/2015 21:02:16

console.log(clock.format(clock.now + clock.add(10, 'minutes'))); 
//returns 10/8/2015 21:08:18

var clock = {
    now:Date.now(),
    add:function (qty, units) {
            switch(units.toLowerCase()) {
                case 'weeks'   :  val = qty * 1000 * 60 * 60 * 24 * 7;  break;
                case 'days'    :  val = qty * 1000 * 60 * 60 * 24;  break;
                case 'hours'   :  val = qty * 1000 * 60 * 60;  break;
                case 'minutes' :  val = qty * 1000 * 60;  break;
                case 'seconds' :  val = qty * 1000;  break;
                default       :  val = undefined;  break;
                }
            return val;
            },
    format:function (timestamp){
            var date = new Date(timestamp);
            var year = date.getFullYear();
            var month = date.getMonth() + 1;
            var day = date.getDate();
            var hours = date.getHours();
            var minutes = "0" + date.getMinutes();
            var seconds = "0" + date.getSeconds();
            // Will display time in xx/xx/xxxx 00:00:00 format
            return formattedTime = month + '/' + 
                                day + '/' + 
                                year + ' ' + 
                                hours + ':' + 
                                minutes.substr(-2) + 
                                ':' + seconds.substr(-2);
            }
};



有时我需要在xmlhttp调用的对象中,所以我喜欢这样。

timestamp : parseInt(new Date().getTime()/1000, 10)



这是一个生成时间戳的简单函数,格式为:mm / dd / yy hh:mi:ss

function getTimeStamp() {
    var now = new Date();
    return ((now.getMonth() + 1) + '/' +
            (now.getDate()) + '/' +
             now.getFullYear() + " " +
             now.getHours() + ':' +
             ((now.getMinutes() < 10)
                 ? ("0" + now.getMinutes())
                 : (now.getMinutes())) + ':' +
             ((now.getSeconds() < 10)
                 ? ("0" + now.getSeconds())
                 : (now.getSeconds())));
}



前几天,我学会了一种非常酷的方法,将给定的Date对象转换为来自JQuery Cookie源代码的Unix时间戳。

这是一个例子:

var date = new Date();
var timestamp = +date;



如果想要一种在Node.js中生成时间戳的基本方法,这种方法很有效。

var time = process.hrtime();
var timestamp = Math.round( time[ 0 ] * 1e3 + time[ 1 ] / 1e6 );

我们的团队正在使用它来在本地主机环境中破解缓存。 输出为/dist/css/global.css?v=245521377 ,其中245521377hrtime()生成的时间戳。

希望这有帮助,上面的方法也可以工作,但我发现这是我们在Node.js中最简单的方法。




我强烈推荐使用moment.js 。 要获得自UNIX纪元以来的毫秒数,请执行此操作

moment().valueOf()

要获得自UNIX纪元以来的秒数,请执行此操作

moment().unix()

你也可以像这样转换时间:

moment('2015-07-12 14:59:23', 'YYYY-MM-DD HH:mm:ss').valueOf()

我一直这样做。 没有双关语。

要在浏览器中使用moment.js

<script src="moment.js"></script>
<script>
    moment().valueOf();
</script>

有关更多详细信息,包括安装和使用MomentJS的其他方法,请参阅其docs




更简单的方法:

var timeStamp=event.timestamp || new Date().getTime();



你只能使用

    var timestamp = new Date().getTime();
    console.log(timestamp);

获取当前时间戳。 无需做任何额外的事情。




这个有一个解决方案:在js中将unixtime标记转换为tim尝试这个

var a = new Date(UNIX_timestamp*1000);
var hour = a.getUTCHours();
var min = a.getUTCMinutes();
var sec = a.getUTCSeconds();



var time = Date.now || function() {
  return +new Date;
};

time();



我喜欢这个,因为它很小:

+new Date

我也喜欢这个,因为它与现代浏览器一样短,并且与现代浏览器兼容,超过500人投票表示它更好:

Date.now()



通常,java脚本不遵循严格的规则,因此增加了错误的可能性。使用之后"use strict",java脚本代码应该遵循严格的规则集,就像在其他编程语言中一样,例如使用终结符,初始化之前的声明等。

如果"use strict"使用,则应遵循严格的规则集编写代码,从而减少错误和模糊的可能性。







javascript date datetime timestamp unix-timestamp