关于日期时间的格式问题

Bug描述

最近在做项目时用到了ElementUI的el-date-picker组件。项目中需要实现一个定时功能,提交数据时,需要将设置的时间与当前的时间做比较,设置的时间不能小于当前时间。我当时做这个功能时,是直接将二者相减,来做判断。releaseTime为我设定的定时发布时间。
releaseTime - new Date().getTime()
这样写,在通过el-date-picker设定时间时没有问题。但在某些情形下,需要将后台拿到的时间(ms格式)转为常见的日期格式(2017-06-21 16:04:00),并显示在el-date-picker中,此时再做判断就出问题,此时无法做出判断,这是为什么呢?

Bug分析

问题的根源在于通过el-date-picker得到的数据和通过毫秒格式的数据转化拿到的时间数据的类型是不一样的,这其实算个很低级的错误。
我采用的转换时间格式的方法如下:

function timeFormat(val){    
      let d,s;
      d = new Date(val);
      s = d.getFullYear() + "-";
      s += addZero(d.getMonth() + 1) + "-";
      s += addZero(d.getDate()) + " ";
      s += addZero(d.getHours()) + ":";
      s += addZero(d.getMinutes()) + ":";
      s += addZero(d.getSeconds());
      return s;
}

这里得到的releaseTime是String类型的,2017-06-21 16:12:37,而通过el-date-picker得到的releaseTime是Date对象的实例,Wed Jun 21 2017 16:12:37 GMT+0800 (中国标准时间),因此通过timeFormat转换得到的releaseTime无法与new Date()比较大小。

Bug解决方法

解决方法很简单,只需要将String类型的releaseTime转为Date的实例即可
new Date(releaseTime) - new Date().getTime()
其实,这个地方,getTIme()是画蛇添足的。Date对象的实例在相减时会自动转化为毫秒格式,返回二者相差的毫秒数。

image.png

请赐教

文中如有错误之处或者您有更好的见解、建议,还望不吝赐教。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • import java.text.SimpleDateFormat;import java.util.Calend...
    霙愔阅读 4,088评论 0 2
  • SwiftDate概况 从Swift发布起,我们就没有放弃使用Swift。 当然,我们希望在项目能够轻松自如地管理...
    Mee_Leo阅读 13,444评论 1 13
  • 画虫是因为有趣,万物皆有灵气,虫有虫趣。每次画虫莫名其妙的畅想到:“虫既如此,人不也应该如此吗?如果界定一个人“有...
    刘佳画室阅读 3,570评论 7 7
  • 喜欢你 是没有频率的声调 浅浅吟唱 可能时光未央 心情刚到 剩下的交给时间
    浅浅蓝九妹阅读 2,767评论 0 3
  • 最柔软的心还在原地
    蒲春阅读 1,378评论 0 0