ie 11
new Date() 传参会显示,无效的日期。如下
2018-8-22 格式非 yyyy-mm-dd 报错 , 所以建议项目中定义日期格式都定义为 yyyy-mm-dd 格式
错误正确
加上小时又错误
chrome 显示正确
加上完整的时分秒,还是错误
chrome 显示正确
解决方案:
这里我们需要先学下Date对象中的两个方法
1.setUTCFullYear()
语法
dateObject.setUTCFullYear(year,month,day)
参数 | 描述 |
---|---|
year | 必需。要给 dateObject 设置的年份字段的值。 该参数应该是含有世纪值的完整年份,如 1999,而不只是缩写的年份值,比如 99。 |
month | 可选。要给 dateObject 设置的月份字段的值。使用世界时表示。 该参数是 0 ~ 11 之间的整数。 |
day | 可选。要给 dateObject 设置的天字段的值。使用世界时表示。 该参数是 1 ~ 31 之间的整数。 |
2.setHours()
语法
dateObject.setHours(hour,min,sec,millisec)
参数 | 描述 |
---|---|
hour | 必需。表示小时的数值,介于 0(午夜) ~ 23(晚上11点) 之间,以本地时间计(下同)。 |
min | 可选。表示分钟的数值,介于 0 ~ 59 之间。在 EMCAScript 标准化之前,不支持该参数。 |
sec | 可选。表示秒的数值,介于 0 ~ 59 之间。在 EMCAScript 标准化之前,不支持该参数。 |
millisec | 可选。表示毫秒的数值,介于 0 ~ 999之间。在 EMCAScript 标准化之前,不支持该参数。 |
根据以上知识,创建一个新的date,取名
transferDate(dateString) dateString参数格式为标准的 yyyy-mm-dd hh:mm:ss:ms === 年-月-日 时:分:秒:毫秒
//解决new Date()IE不支持传参 function transferDate(dateString) { // 拆分日期 var _dateString = dateString.split(' '); //获取日期 =>年月日 var _date = _dateString[0].split('-'); //创建一个新的日期 var _newDate = new Date(); //设置当前日期 年月日 (注意原始的月份是0 -11 ) _newDate.setUTCFullYear( _date[0], // 年 ((_date[1]?_date[1]:0) - 1), // 月 (_date[2]?_date[2]:1) // 日 ); var _len=_dateString.length; if(_len>1){ //获取时间 => 时分秒 var _times = _dateString[_len - 1].split(':'); //设置当前时间 时分秒 (注意时区转换,北京时间,东八区加了8,所以先减去8 ) _newDate.setUTCHours( ((_times[0]?_times[0]:0) - 8), // 时 (_times[1]?_times[1]:0), // 分 (_times[2]?_times[2]:0), // 秒 (_times[3]?_times[3]:0) // 毫秒 ); } return _newDate; }
OK 现在我们把上面出错的日期,在进行一次测试;
全部通过;
-
« 上一篇:
github 上建多个ssh key
-
git 多次提交变一次提交
:下一篇 »