【问题标题】:Adding to Epoch to find new Date in Javascript添加到 Epoch 以在 Javascript 中查找新日期
【发布时间】:2016-12-29 20:48:47
【问题描述】:

我正在处理脚本的响应以计算到期日期。回复是7200,开发人员告诉我这是一个时代值,应该等于 3 个月。我以前从未使用过 Epoch,所以不明白它是如何工作的?

给我的公式是(created_at + expires_in) * 1000,我被告知会给我新的约会。

我使用了dtmNow = new Date(Date.now()).toISOString();,它返回了2016-08-23T06:33:35.936Z,这是正确的,但是当我尝试dtmExpires = new Date((Date.now()+7200)*1000).toISOString();时,它返回了+048613-09-25T09:58:58.000Z

我不确定我在这里做错了什么?

【问题讨论】:

  • 一个纪元是衡量事物的基准。 javascript 时间值的纪元是 1970-01-01T00:00:00Z。差异以毫秒为单位,7,200 是 epoch 之后的 7.2 秒。没有任何计量单位,其中 7,200 个等于 3 个月,即大约 7.776e9 毫秒。
  • @RobG 谢谢!我将我的代码更改为dtmExpires = new Date(Date.now()+(7200*1000000)).toISOString();,它返回2016-11-14,即84天:D如果您作为答案发布,我会接受:)

标签: javascript date epoch


【解决方案1】:

Date.now() 返回自纪元以来的毫秒数(当前时间值)。如果将数字传递给 Date 构造函数,则它将用作新 Date 实例的时间值。如下:

new Date(Date.now()).toISOString()

完全一样:

new Date().toISOString()

即你不需要 Date.now()。如果您想将 3 个月添加到日期,请使用 Date 方法:

// Get a Date for now
var now = new Date();

// Add 3 months
now.setMonth(now.getMonth() + 3);

但是,如果当前是 11 月 30 日,那么上面将尝试创建 2 月 30 日的日期,最终将是 3 月 1 日或 2 日,具体取决于它是否处于闰年。所以如果当月修改后的日期与原来的不匹配,可以将其设置回上个月的最后一天。

如果您想添加(比如说)90 天,请使用类似于以下的 setDategetDate 方法来执行此操作。如果您越过夏令时边界,这也会考虑到夏令时边界,而设置时间值则不会。

SO 控制台以 UTC 格式写入日期,因此在查看以下结果时请考虑到这一点:

function add3Months(d) {
  // Default to current date if d not provided
  d = d || new Date();
  
  // Remember current date
  var date = d.getDate();
  
  // Add 3 months
  d.setMonth(d.getMonth() + 3);
  
  // Set the date back to the last day of the previous
  // month if date isn't the same
  if (d.getDate() != date) d.setDate(0);
  
  return d;
}

// Add 3 months to today
console.log(add3Months());

// Add 3 months to 30 November
console.log(add3Months(new Date(2016,10,30)))

【讨论】:

  • 不幸的是,我需要使用我正在使用的 API 给出的响应,即 7200,因此如果他们更改响应,我需要使用 Date.now()+(7200*1000000) 以使其准确。不会总是3个月。也不需要完全是3个月。这就是他们所说的。不过感谢您提供此信息!很有帮助。
猜你喜欢
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多