let endTime = this.datePipe.transform(this.flowRequestVo.endTime, 'yyyy-MM-dd 23:59:59'); this.flowRequestVo.endTime = this.getDate(endTime);
this.datePipe.transform -> 管道转换格式,由于上图的endTime是通过日历组件获取时间,时间会拿到前一天的日期和08:00:00, (eg: Tue Jun 05 2017 08:00:00 GMT+0800, 这里我明明选择了6月6日),当通过管道转换后的日期为字符串(eg: '2017-06-06 23:59:59'),但在后台作数据选择要通过标准的日期格式去筛选数据,所以很自然的再次 new Date('2017-06-06 23:59:59')一次,让其转换成标准的日期格式,但就在这里坑出来了,new Date()如果要传参数获取标准的日期格式,只能一下两种传
new Date(2009,1,1); //正确 这不是字符串
new Date("2009/1/1"); //正确
new Date("2009-1-1"); //错误
所以才会出现下面的方法取转换时间格式,简单的2017-06-06转换不了
/** * 将字符串的日期转换为标准日期格式 * @param strDate * @returns {Date} */ getDate(strDate): any { strDate = strDate.replace(/-/g,"/"); return new Date(strDate); }
为何要两次转换,因为ng2的内置管道DatePipe只能通过'-'去选择格式,迫于无奈要两次转换。