如何从 Moment.js 持续时间中获取特定日期?
How do I get the specific date from a Moment.js duration?
我无法理解持续时间的工作原理。为了使解释更简单,请考虑以下示例:
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 秒前的任何日期。我该如何实现?
持续时间与具体日期无关。您可以使用减法来获取持续时间开始时的日期时间(假设它在这个特定时刻结束):
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>
我无法理解持续时间的工作原理。为了使解释更简单,请考虑以下示例:
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 秒前的任何日期。我该如何实现?
持续时间与具体日期无关。您可以使用减法来获取持续时间开始时的日期时间(假设它在这个特定时刻结束):
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>