我有一个使用日期选择器的组件。 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
检索格式,那也是一个很好的解决方案。
答案 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中提取日期格式的方法。