【问题标题】:New JavaScript date object from seconds of a day来自一天中的几秒钟的新 JavaScript 日期对象
【发布时间】:2013-05-13 19:54:38
【问题描述】:

看起来很简单,但我想不通。 叹息

我有 74141 作为一天中的秒数,如何从这个数字创建一个 Date 对象来表示以小时和秒为单位的时间?我不关心的实际日期,因为我只是要使用 getHours/Seconds/Minutes 来设置另一个日期正确的日期。

【问题讨论】:

标签: javascript date time


【解决方案1】:

您可以为此目的使用Date.prototype.setSeconds。 您真的不需要担心转换,因为这是自动的:

var date = new Date(1970, 0, 1); 
date.setSeconds(secs);

上述技巧依赖于Date 正好指向午夜的事实,因此时间 你回来是准确的。出于精确的原因,我使用的是 EPOCH,尽管任何“准确”的午夜都可以。

【讨论】:

  • 如果您知道您有一个日期对象精确地表示特定日期的午夜,那么只需设置秒字段即可。如果日期对象代表一天中的另一个时间,那么日期内部将通过添加多余的秒数来“修复”时间。
  • 是的,这将使它起作用,并且当您像在答案中那样构建 Date 实例时,任何其他日期也将起作用。
【解决方案2】:
  1. 获取日期

     var now = new Date();
    
  2. 将时间字段清零:

     now.setHours(0).setMinutes(0).setSeconds(0).setMilliseconds(0);
    
  3. 根据您的时间编号创建一个新时间:

     var theTime = new Date(now.getTime() + timeInSeconds * 1000);
    

您当然可以使用代表任何其他日期的 Date 实例,但使用当前日期似乎是最不奇怪的事情(除非有一些其他条件)。

edit — 实际上,在将时间字段清零后,您可以将 .setSeconds() 与您的值一起使用并避免创建新对象。无论如何,这可能不是什么大问题。

【讨论】:

    【解决方案3】:

    除了alex23的答案,给0作为日期构造参数就足够了。

    var date = new Date(1970, 0, 1);
    // same as
    var date = new Date(0);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-08
      • 2014-03-08
      • 2014-07-01
      • 1970-01-01
      • 2011-09-03
      • 1970-01-01
      • 2012-05-19
      相关资源
      最近更新 更多