如何获得条纹订阅 current_period_end 作为日期

How to get stripe subscription current_period_end as date

我的最终目标是检查 subscription.cancel_at_period_end 是否有 false 并将订阅结束日期存储为时刻日期对象。

const subscriptionEndDate = moment(subscription.current_period_end);

这是测试模式下来自条带的结果字段。

current_period_end: 1649650039

但即使使用 new Date(subscription.current_period_end) 也会返回 1970-01-20T02:14:10.039Z

这不是应该在下一个账单日期显示的字段吗?

有什么想法吗?我错过了什么?

更新:

我只是做了一些测试,发现如果我将该值乘以 1000 结果是 1649650039000 等于

Mon 11 April 2022 00:07:19

这有什么原因吗?这是前进的安全方法吗?

更新:

我接受了下面的答案并提供了直接转换为 unix 时间戳的 momentjs。

const date = moment(new Date()).unix();

问题

  • Stripe 报告日期字段为 Unix timestamps。这些表示 date/time 自 1970 年 1 月 1 日以来的秒数(有点……闰秒很奇怪)。
  • Javascript Date object 尝试转换自 1970 年 1 月 1 日以来的 毫秒 的数量,因为这是与 front-end 更相关的时间增量网络编码。

解决方案

您已经找到了一个合适的解决方案,即将时间戳乘以 1000,从而将以秒为单位的值转换为以毫秒为单位的值。这似乎是围绕 1, 2, 3

的常见工作