解决办法"/>
antd中DatePicker选择此刻获取的时间不正确(多了8小时)解决办法
1、现象
点击“此刻”后,可以看到在DatePicker上时间(1)和打印出来的dateString(3)是一致的,是当前的时间;而value(2)是moment数据,时间却多了8小时。
在线地址:
2、解决办法
可以看到,onChange的第二个参数已经是正确的时间,如果需要再用new Date(dateString)处理一下就获得了Date类型数据;
或者也可以就用第一个参数,new Date(value.format('YYYY-MM-DD HH:mm:ss'));只是需要把moment格式化一下。
3、产生原因
到ant-design的git里找到了同样问题的issue,根据里面大佬说:
a.因为点击 Now/今天/此刻 那个按钮时,moment 对象会经过 getTodayTime设置了 utcOffset
b.utcOffset
会把 moment 对象的 _isUTC
设为 true
并设置 _offset
(在上面第一张截图console中可以看到)
而点击日期面板时的 moment 对象没有经过类似的处理,所以其实点击日期面板和 Now/今天/此刻 按钮时得到的 moment 对象其实是略有不同的。
// 日期面板 moment 对象
{_isUTC: false,
}// 现在、今天按钮的 moment 对象
{_isUTC: true,_offset: 480,
}
issue:日期选择框点击此刻返回moment对象中的时间多加了8个小时 #6236
更多推荐
antd中DatePicker选择此刻获取的时间不正确(多了8小时)解决办法
发布评论