我是在做混合开发的时候遇到的问题,就是一个字符串(如:2018-07-12)转时间Date类型,一般情况下直接new Date(2018-07-12)就行了,但是在苹果Safari浏览器和IE6中,这样子不行的
在搜索很多资料后解决了这一个问题,下面是代码
js版:
/**
* 字符串转Date(兼容模式)
* @param {string} timeStr (2018-05-20,2018.05.20,2018/05/20)
*/
stringTimeToDate(timeStr){
var resDate;
if(timeStr.indexOf("-")!=-1){
var nyrArr=timeStr.split(' ')[0].split('-');
var sfmArr=timeStr.split(' ')[1].split(':');
resDate=new Date(nyrArr[0],nyrArr[1]-1,nyrArr[2],sfmArr[0],sfmArr[1],0,0);
}
if(timeStr.indexOf(".")!=-1){
var nyrArr=timeStr.split(' ')[0].split('.');
var sfmArr=timeStr.split(' ')[1].split(':');
resDate=new Date(nyrArr[0],nyrArr[1]-1,nyrArr[2],sfmArr[0],sfmArr[1],0,0);
}
if(timeStr.indexOf("/")!=-1){
var nyrArr=timeStr.split(' ')[0].split('/');
var sfmArr=timeStr.split(' ')[1].split(':');
resDate=new Date(nyrArr[0],nyrArr[1]-1,nyrArr[2],sfmArr[0],sfmArr[1],0,0);
}
return resDate;
}
typescript版
/**
* 字符串转Date(兼容模式)
* @param {string} timeStr
* @returns {Date}
*/
stringTimeToDate(timeStr:string):Date{
let resDate:Date;
if(timeStr.indexOf("-")!=-1){
let nyrArr:any=timeStr.split(' ')[0].split('-');
let sfmArr:any=timeStr.split(' ')[1].split(':');
resDate=new Date(nyrArr[0],nyrArr[1]-1,nyrArr[2],sfmArr[0],sfmArr[1],0,0);
}
if(timeStr.indexOf(".")!=-1){
let nyrArr:any=timeStr.split(' ')[0].split('.');
let sfmArr:any=timeStr.split(' ')[1].split(':');
resDate=new Date(nyrArr[0],nyrArr[1]-1,nyrArr[2],sfmArr[0],sfmArr[1],0,0);
}
if(timeStr.indexOf("/")!=-1){
let nyrArr:any=timeStr.split(' ')[0].split('/');
let sfmArr:any=timeStr.split(' ')[1].split(':');
resDate=new Date(nyrArr[0],nyrArr[1]-1,nyrArr[2],sfmArr[0],sfmArr[1],0,0);
}
return resDate;
}