问题描述
想要设置组件为英文,代码如下:
import locale from 'antd/lib/date-picker/locale/en_US';
...
省略其他代码
...
<RangePicker
{
...{
locale
}
}
/>
但是并没有得到想要的效果,由下图中 6月 2019
可以看到应该是已经修改为英文顺序了,但是组件中的字还是中文的。
问题原因
注意:DatePicker、MonthPicker、RangePicker 部分 locale 是从 value 中读取,所以请先正确设置 moment 的 locale。
文档中说:
部分 locale
是从 value
中读取,这个 value
就是组件中的每个日期的值,它们都是 moment
类型。
所以要先设置 moment
的 locale
为英文,但是如下图在文件头部添加以下代码依然不可以。
import moment from 'moment';
import 'moment/locale/en-gb';
moment.locale('en-gb');
可以把选中的日期打印出来看一下,发现 moment
是中文的。
解决办法
在使用 moment
的地方添加 moment.locale('en')
,比如我设置了不可选择的日期:
// 日期范围限制
moment.locale('en');
const start = moment().startOf('month');
const end = moment().month(moment().month() + 6).endOf('month');
function disabledDate(current) {
return current && (start > current.valueOf() || end < current.valueOf());
}
如果你不用设置不可选择日期或这初始化怎么办?
经过一翻测试只要把 moment.locale('en')
放到 render
函数里就能生效了。?
至于为什么我也不知道(╥﹏╥)