0

看起来很简单,但我无法弄清楚。

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

4

3 回答 3

4

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

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

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

于 2013-05-13T19:56:52.220 回答
3
  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 实例,但使用当前日期似乎是最不奇怪的事情(除非有其他条件)。

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

于 2013-05-13T19:56:54.870 回答
2

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

var date = new Date(1970, 0, 1);
// same as
var date = new Date(0);
于 2013-05-13T21:06:14.710 回答