从react-intl提取日期格式

时间:2018-08-08 15:02:22

标签: date momentjs react-intl

我有一个使用日期选择器的组件。 datepicker需要一个适合moment.js模式的dateFormat属性,例如'DD.MM.YYYY''MM/DD/YYYY'

日期格式由react-intl处理。从日期转换为字符串(通过formatDate)时,此方法工作正常。但是,我需要如上所述检索模式。

我的目标是做

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

我已经找到了this similar question,但是唯一的答案取决于解析字符串,而我做不到,因为我不知道Day或Month在格式化日期中排在首位。

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

1 个答案:

答案 0 :(得分:0)

我能够从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',此函数将返回'MM / DD / YYYY',Moment.js可以使用的格式。
仅当您知道月份和日期始终以两位数字显示时,此功能才起作用。如果格式为2018年9月25日,则会失败。

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