为什么时刻isValid()API不支持格式' L'对于非'本地

时间:2016-04-27 09:38:30

标签: momentjs

Moment API isValid似乎只支持格式' L'对于本地是' en':

区域设置设置为' en'

moment(new Date()).locale('en').format('L')              //"04/27/2016"
moment('04/27/2016', 'L', true).isValid()                //true

本地设置为' zh-cn':

moment(new Date()).locale('zh-cn').format('L')           //"2016-04-27"
moment('2016-04-27', 'L', true).isValid()                //false, why here is false?

因为我不想硬编码MM-DD-YYYY'为' zh-cn'在这里,还有其他好方法吗?

1 个答案:

答案 0 :(得分:4)

像这样设置区域设置只会影响moment的当前实例,而不会影响将来的任何实例。将来的实例再次使用默认语言环境,在您的情况下,'L'格式不是YYYY-MM-DD格式。

您可以全局设置区域设置:

moment.locale('zh-cn');
moment(new Date()).format('L')            // 2016-04-27
moment('2016-04-27', 'L', true).isValid() // true

或者为每个实例指定语言环境,包括用于解析的实例:

moment(new Date()).locale('zh-cn').format('L')     // 2016-04-27
moment('2016-04-27', 'L', 'zh-cn', true).isValid() // true