如何从 Moment.js 持续时间获取特定日期?

时间:2021-01-20 07:15:31

标签: javascript momentjs

我无法理解持续时间的工作原理。为了更简单地解释,请考虑以下示例:

moment.duration(123, 'seconds').humanize()
// => "2 minutes". So far so good

const duration = moment.duration(123123123, 'seconds')
duration.humanize()
// => "4 years". Hmm, I want to know the specific date
duration.format("YYYY/MM/DD")
// => Uncaught TypeError. Well, let's search other solutions
moment.utc(duration.asMilliseconds()).format("YYYY/MM/DD")
// => "1973/11/26". What?! That's not 4 years ago!

所以我想我假设 .duration() 以某种方式知道 X 秒前的日期时间,但我想它实际上只是计算时间相当于多少秒。例如,123 秒大约是 2 分钟,但函数本身不知道大约 2 分钟前的时间,这最终让我有点不直观。

也就是说,我不确定我应该如何将持续时间转换为日期。预期结果是 123123123 秒前的任何日期。我如何做到这一点?

1 个答案:

答案 0 :(得分:2)

持续时间与特定日期无关。您可以使用减法来获取持续时间开始时的日期时间(假设它在这个特定时刻结束):

console.log(
    moment()
    .subtract(123123123, 'seconds') // your duration
    .format('MMMM Do YYYY, h:mm:ss a')
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

相关问题