从 react-intl 中提取日期格式

Extract the date format from react-intl

我有一个使用日期选择器的组件。日期选择器需要符合 momentjs 模式的日期格式 属性,例如 'DD.MM.YYYY''MM/DD/YYYY'.

日期格式由 react-intl 处理。从日期转换为字符串(通过 formatDate)时,这很好用。但是,我需要如上所述检索模式。

我的目标是做类似

的事情
dateFormat = this.props.intl.extractDateFormat() // returns 'DD.MM.YYYY'

我找到了,但唯一的答案依赖于解析字符串,我不能这样做,因为我不知道在格式化日期中是日还是月。

如果可以将此字符串转换为日期并以某种方式从 momentjs 中检索格式,那也是一个很好的解决方案。

我能够从 react-intl 获取日期格式。为此,我定义了一个示例日期,并通过 react-intl 将其格式化,然后通过引用原始字符串来解析格式。

我导出为 injectIntl(Component) 的组件有这个方法:

deriveDateFormat = () => {
  const isoString = '2018-09-25' // example date!

  const intlString = this.formatDate(isoString) // generate a formatted date
  const dateParts = isoString.split('-') // prepare to replace with pattern parts

  return intlString
    .replace(dateParts[2], 'DD')
    .replace(dateParts[1], 'MM')
    .replace(dateParts[0], 'YYYY')
}

日期将例如被格式化为 '09/25/2018',这个函数将 return 'MM/DD/YYYY',Moment.js.
可以使用的格式 此功能仅在您知道月份和日期始终以两位数显示时才有效。如果格式类似于 9/25/2018,它将失败。

我还没有找到直接从 react-intl 中提取日期格式的方法。