js日期YYYY-MM-DD格式转时间戳的后不为当日0点的问题

727 阅读1分钟

需求描述:

         将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) 续更……