需求描述:
将YYYY-MM-DD 形式的日期转化为D当 00: 00: 00 的时间戳
为什么会有这个需求:
antd 组件Detepicker 选择后返回的e._d格式为 “2019-11-26”形式,需要将用户选择的日期转化后与后端的时间戳对比是否大于当前的day.
遇到的坑:
实例: 将日期转为时间戳后,转化后是当天的早上8点并非 00:00:00
1)先转时间戳,截图如下:
2)重点来了,在线工具将上述时间戳转日期,截图如下:
产生原因:
new Date 获取的时间是当前时区的北京时间,比格林威治(GMT)国际标准时间早8个小时(北京时间现在早上10点,格林威治现在2点),所以转化后的时间就会在标准时间上加8小时。
解决方案:
1)将 YYYY-MM-DD 格式转化为 YYYY/MM/DD 再转,就是00:00:00
方法: 正则将 - 转化为 /
const oriTime = YYYY-MM-DD
const curTime = oriTime.replace(/(-)/g, "/")
+new Date(curTime)
截图如下:
验证:
2) 续更……