我正在尝试获得两种不同类型的relativeTime
。
在一个文件中,我有:
moment.updateLocale('en', { relativeTime: {
future: 'in %s',
past: '%s ago',
s: 'secs',
ss: '%ss',
m: 'a min',
mm: '%dm',
h: '1h',
hh: '%dh',
d: 'a day',
dd: '%dd',
M: 'month',
MM: '%dM',
y: 'year',
yy: '%dY'
}});
与
moment.utc(date).fromNow()
但这已全局应用于所有矩的使用,我希望此文件之外的矩的其他使用对fromNow()
使用常规的较长文本格式。
我尝试过:
let g = moment()
g.updateLocale('en', { relativeTime: {
...
但是它给出了错误g.updateLocale is not a function
。
有人知道如何为relativeTime
日期格式获得两种不同的fromNow()
设置吗?
谢谢!
答案 0 :(得分:1)
诚然,这不一定是最优雅的解决方案,但是在您要使用自定义语言环境格式的一个文件中,您可以:
relativeTime
的当前(默认设置)格式保存到对象。relativeTime
格式全局设置为您的自定义格式。moment
日期/字符串操作。relativeTime
格式全局设置回您保存的对象,来恢复原始默认格式。它看起来像这样:
const CONFIG_ORIG = moment().locale("en").localeData()._relativeTime;
const CONFIG_NEW = {
future: "in %s",
past: "%s ago",
s: "secs",
ss: "%ss",
m: "a min",
mm: "%dm",
h: "1h",
hh: "%dh",
d: "a day",
dd: "%dd",
M: "month",
MM: "%dM",
y: "year",
yy: "%dY"
};
const DATE = new Date();
// Original format displays: "a few seconds ago"
const string1 = moment.utc(DATE).fromNow();
moment.updateLocale("en", { relativeTime: CONFIG_NEW });
// Custom format displays: "secs ago"
const string2 = moment.utc(DATE).fromNow();
moment.updateLocale("en", { relativeTime: CONFIG_ORIG });
// Restored original format displays: "a few seconds ago"
const string3 = moment.utc(DATE).fromNow();
下面是一个代码沙箱,它在运行中显示了此信息:
其他资源: