1

我有一个静态页面,它将指定一个硬编码的确切日期。如果使用有 javascript,我想将这个硬编码的确切日期转换为“时间前”。

例如:

3 hours ago

我的问题是,javascript 能够以什么格式最有效地转换为时间前的日期?

  • 2013 年 10 月 10 日
  • 10.10.13
  • 2013 年 10 月 10 日
  • 101013
4

3 回答 3

2

我会看这篇文章:https ://stackoverflow.com/a/3177838/2895307

在其中,他只是使用 javascript Date() 作为“timeSince()”函数的参数。要从您的硬编码字符串创建一个 javascript 日期,您可以使用以下格式:

var d1 = new Date("1975 年 10 月 13 日 11:13:00")

于 2013-10-18T15:15:01.373 回答
1

绝对 unix 时间戳是所有日期和时间计算的最佳格式,您可以稍后将结果转换为更易读的格式。

计算很简单,你从过去某个事件的时间戳开始,例如:

var anHourAgo = Date.now() - 3600000;

然后你从当前时间戳中减去它并得到自该事件以来经过的毫秒数

Date.now() - anHourAgo

然后你可以将它传递给任何将这些毫秒转换为小时、分钟和秒的函数,这是一个需要几秒钟并返回包含该信息的数组的示例,以及另一个用零填充这些数字的函数

var zeroPad = function(n){
    return n.toString().replace(/^(\d)$/,'0$1');
};

var formatSecs = function(s){
    var r = [
        Math.floor(s / 3600),
        Math.floor(s%3600 / 60),
        Math.floor((s%3600)%60)
    ];
    r.push(zeroPad(r[0])+':'+zeroPad(r[1])+':'+zeroPad(r[2]));
    return r;
};

formatSecs 函数需要秒而不是毫秒,您应该除以 1000 并将该数字四舍五入,然后将该数字传递给函数

Math.round(Date.now() - anHourAgo) / 1000

最后,这是所有这些代码的工作示例:

http://codepen.io/DavidVValdez/pen/axHGj

我希望这会有所帮助,干杯!

于 2013-10-22T05:47:45.727 回答
0

最简单的方法是使用Date.getTime().

这将为您提供自 Unix 纪元以来的毫秒数,并使数学变得非常简单。

日期.getTime

于 2013-10-18T15:11:58.293 回答