new Date()转换 safari浏览器兼容

1、js将时间转换为时间戳方法:定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数

new Date().getTime()  //单位是毫秒  1秒=1000毫秒
Date.parse(new Date()) //获取的时间戳把毫秒数改成000显示
(new Date()).valueOf()

new Date('1970-01-01 08:00:00').getTime()
//打印0  格林时间是new Date('1970-01-01 00:00:00').getTime()  中国时间 new Date('1970-01-01 08:00:00').getTime()

时间戳转换为普通日期格式

Date toLocaleString方法

var oldTime = (new Date()).getTime();
function getLocalTime(nS) {  
 return new Date(parseInt(nS) ).toLocaleString()  
//toLocaleString 方法是用于返回格式化对象后的字符串
//replace(/:\d{1,2}$/,' ')验证替换以:开始有一位或二位数字的结束字符串,就是秒;替换为空
}
getLocalTime(oldTime )
image.png

利用Date属性方法把时间戳转换为我们想要的日期格式

function add0(m){return m<10?'0'+m:m }
function format(shijianchuo)
{
//shijianchuo是整数,否则要parseInt转换
var time = new Date(shijianchuo);
var y = time.getFullYear();
var m = time.getMonth()+1;
var d = time.getDate();
var h = time.getHours();
var mm = time.getMinutes();
var s = time.getSeconds();
return y+'-'+add0(m)+'-'+add0(d)+' '+add0(h)+':'+add0(mm)+':'+add0(s);
}

2、我们经常用 yyyy-MM-dd HH:mm:ss格式表示日期,如: 2020-11-26 14:12:10,在js开发中也经常会把此格式字符串格式化为javascript Date类型,如: new Date('2020-11-26 00:00:00') ,但是此操作在safari浏览器上会报错 返回Invalid Date. 图下图

image.png

3、问题解决

首先在new Date('2020-11-26 00:00:00')格式化前需要先把字符串转化为safari支持的格式,可以是yyyy/MM/dd HH:mm:ss 或者yyyy-MM-ddTHH:mm:ss 代码如下:

new Date('2018-11-11 00:00:00'.replace(/-/g, "/"))
new Date('2018-11-11 00:00:00'.replace(/ /g,"T"))

ie8不支持-分割的日期 所以建议用/分割日期字符串

你可能感兴趣的:(new Date()转换 safari浏览器兼容)