【问题标题】:How migrate moment.updateLocale() to date-fns locale method?如何将 moment.updateLocale() 迁移到 date-fns 语言环境方法?
【发布时间】:2021-09-17 16:13:58
【问题描述】:

这是我的代码快照以了解更多详细信息:

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({}) 对象中所做的。

【问题讨论】:

    标签: javascript momentjs javascript-objects moment-timezone date-fns


    【解决方案1】:

    花费大量时间后,找到了解决此问题的方法。问题是 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 })
    }
    

    【讨论】:

      猜你喜欢
      • 2019-01-03
      • 2018-04-26
      • 1970-01-01
      • 2021-09-01
      • 2020-03-23
      • 2023-01-05
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多