感谢伟大的图书馆。
我遇到的一个问题是 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);
}
具体来说,这可以运行以说明问题:
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 小时'。
理想情况下,我希望字符串输出显示两个最重要的连续单元。 几个例子:
moment.js 是否需要这种行为,还是与库的目标用例相差太多?
最有用的评论
您实际上可以设置您希望将其设置为的时间阈值,如文档中所示。
如果您总是想显示全时,您可以将阈值设置得更精确: