如何解决如何将 moment.updateLocale() 迁移到 date-fns 语言环境方法?
index.js
import moment from 'moment'
moment.updateLocale('en',{
relativeTime: {
future: 'in %s',past: '%s ago',s: '%ds',m: '%dm',mm: '%dm',h: '%dh',hh: '%dh',d: '%dd',dd: '%dd',M: '%d month',MM: '%d months',y: '%d year',yy: '%d years'
}
})
function format ({ duration }) {
// How to return below output from date-fns module?
return moment.duration(duration).humanize()
}
console.log(format(60000))// output is --> 10m
cmd> node index.js
我想通过 date-fns local 做同样的事情。但是我没有看到任何 updateLocale 方法,也不知道如何进行映射。我在 moment.updateLocale({}) 对象中做的。
解决方法
在花费大量时间后找到了解决此问题的方法。问题是 date-fns formateDuration() 不支持映射传递的持续时间的同义词。所以定义了这个问题的解决方法。直到 date-fns 人们解决了这个问题。将下面的代码替换为你的它会得到相同的结果。
import { intervalToDuration,formatDuration } from 'date-fns'
// work around,until it fixed by date-fns libraray formatDuration method
const formatDistanceLocale = { xSeconds: '{{count}}s',xMinutes: '{{count}}m',xHours: '{{count}}h' }
const shortEnLocale = { formatDistance: (token,count) => formatDistanceLocale[token].replace('{{count}}',count) }
export function format ({ duration }) {
duration = intervalToDuration({ start: 0,end: duration })
return formatDuration(duration,{ format: ['hours','minutes','seconds'],locale: shortEnLocale })
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。