Moment: <moment minutes="" ago="">.from(moment()) // 返回“一小时前”</moment>

创建于 2014-10-07  ·  4评论  ·  资料来源: moment/moment

感谢伟大的图书馆。

我遇到的一个问题是 from() 会将持续时间 >= 45 分钟舍入到一个小时。 其他单位(秒、天等)也四舍五入。 在我们的应用程序中,我们希望比这更精确一些。 我相信下面列出的函数会进行四舍五入。 可选地删除舍入的合适解决方案是什么? 谢谢!

    function relativeTime(milliseconds, withoutSuffix, lang) {
        var seconds = round(Math.abs(milliseconds) / 1000),
            minutes = round(seconds / 60),
            hours = round(minutes / 60),
            days = round(hours / 24),
            years = round(days / 365),
            args = seconds < 45 && ['s', seconds] ||
                minutes === 1 && ['m'] ||
                minutes < 45 && ['mm', minutes] ||
                hours === 1 && ['h'] ||
                hours < 22 && ['hh', hours] ||
                days === 1 && ['d'] ||
                days <= 25 && ['dd', days] ||
                days <= 45 && ['M'] ||
                days < 345 && ['MM', round(days / 30)] ||
                years === 1 && ['y'] || ['yy', years];
        args[2] = withoutSuffix;
        args[3] = milliseconds > 0;
        args[4] = lang;
        return substituteTimeAgo.apply({}, args);
    }

最有用的评论

您实际上可以设置您希望将其设置为的时间阈值,如文档中所示

如果您总是想显示全时,您可以将阈值设置得更精确:

// Set thresholds to be at their "max" value
moment.relativeTimeThreshold('s', 59);
moment.relativeTimeThreshold('m', 59);
moment.relativeTimeThreshold('h', 23);
moment.relativeTimeThreshold('d', 28);
moment.relativeTimeThreshold('M', 12);

所有4条评论

具体来说,这可以运行以说明问题:

moment().subtract(45, 'minutes').from(moment())

您实际上可以设置您希望将其设置为的时间阈值,如文档中所示

如果您总是想显示全时,您可以将阈值设置得更精确:

// Set thresholds to be at their "max" value
moment.relativeTimeThreshold('s', 59);
moment.relativeTimeThreshold('m', 59);
moment.relativeTimeThreshold('h', 23);
moment.relativeTimeThreshold('d', 28);
moment.relativeTimeThreshold('M', 12);

万分感谢。 有什么方法可以让我将 75 分钟的持续时间显示为“一小时零 15 分钟”,而不是“一小时”? 同样的问题 90 分钟 -> '2 小时'。

理想情况下,我希望字符串输出显示两个最重要的连续单元。 几个例子:

  • 1 小时 56 分 7 秒 -> '1 小时 56 分钟'
  • 4 小时 56 秒 -> '四小时'
  • 2 天 56 分钟 -> '两天'
  • 2 天 1 小时 1 分钟 -> '两天一小时'

moment.js 是否需要这种行为,还是与库的目标用例相差太多?

这就是所谓的“持续时间格式”,它本身就是一个非常非常复杂的话题。 tl; dr它的一些东西没有在核心中实现,但这里有一些方法可以手动或使用插件来实现你想要的。 您可以尝试阅读: https : https :

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

4rg0n picture 4rg0n  ·  3评论

dogukankotan picture dogukankotan  ·  3评论

benhathaway picture benhathaway  ·  3评论

slavafomin picture slavafomin  ·  3评论

alvarotrigo picture alvarotrigo  ·  3评论