gpt4 book ai didi

javascript - diff momentjs 天与毫秒会产生不同的结果

转载 作者:行者123 更新时间:2023-12-02 23:18:45 31 4
gpt4 key购买 nike

在我的代码中,我有以下内容

const today = moment();
const someday = moment('Wed Oct 10 2018 13:50:00 GMT-0400 (Eastern Daylight Time)');

const diff = today.diff(someday, "days");
const diff2 = today.diff(someday);
out.innerText = diff;
out2.innerText = moment.utc(diff2 * 1000).format("D[ day(s)] H[ hour(s)] m[ minute(s)]");

我期望 diff 和 diff2 有相同的日期,但 diff 返回正确的日期,而 diff2 返回错误的数据。这里的格式有何不同?

JSFiddle:link

最佳答案

尝试:

out2.innerText = moment.duration(diff2).asDays();

这将为您提供十进制天数(没有 utc 转换) - 这与您在 today.diff(someday, "days") 中看到的内容相匹配。

您可以按照所需的 X 天 Y 小时 Z 分钟方式自行格式化,如下所示:

const theDuration = moment.duration(diff2);
out2.innerText = Math.floor(theDuration.asDays()) + " day(s) " +
theDuration.hours() + " hour(s) " + theDuration.minutes() + " minute(s)";

只需确保您的输入日期格式/您正在计算的计算机上的时钟/所需的用户输出之间的时区全部匹配。这是文档页面上的有用概述:local / utc .

我还看到提到的 moment-duration-format 库很有用: https://github.com/jsmreese/moment-duration-format

尝试:

out2.innerText = moment.utc(diff2).format("DDDD [ day(s)] H[ hour(s)] m[ minute(s)]");

在格式字符串 (moment.js .format docs) 中使用“一年中的某一天”(DDDD),而不是“一月中的某一天”(DD) ,并删除 .utc 构造函数中不必要的 * 1000,因为就像 Jb31 提到的那样,diff2 已经以毫秒为单位。 根据 Jb31,这是一个非常糟糕的结果想法当差异中的天数达到 365 时...

关于javascript - diff momentjs 天与毫秒会产生不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57046127/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com