js Date对象要注意的问题(时间转换)

1、时间戳和时间对象可以灵活转变:

let  n = new Date()  // 返回的是当前时间对应的国际时间
let nt =n.getTime()
let n2 =new Date(nt)
console.log(n,nt,n2)

输出为当前时间和时间戳:

Date 2018-12-06T06:41:56.217Z

1544078516217

Date 2018-12-06T06:41:56.217Z

2、时间转换的字符串参数格式不同,返回的时间格式有时会不同

// 时分秒如果有参数,返回的是参数中的本地时间对应的国际时间。
let i = new Date('2018-12-06 0:0:0')
let j = new Date('2018/12/06 0:0:0')

输出 :Date 2018-12-05T16:00:00.000Z
    Date 2018-12-05T16:00:00.000Z
// 时分秒如果没有参数, ‘-’ 符号的返回的是国际标准时间0点,‘/’符号返回的是本地时间0点对应的国际时间
let i2 = new Date('2018-12-06')
let j2= new Date('2018/12/06')
console.log(i2,j2)

输出:Date 2018-12-06T00:00:00.000Z
    Date 2018-12-05T16:00:00.000Z
// 时间戳对比确认
console.log(i.getTime(),j.getTime(),i2.getTime(),j2.getTime())
输出:1544025600000 1544025600000 1544054400000 1544025600000 
console.log(j == j2)
输出: false

3、非字符串参数,记得月份是0-11:

let ii = new Date(2018,12,6,0,0,0)
let ii2 = new Date(2018,12,6)
console.log(ii,ii2)

输出的是本地时间0时对应的国际时间:

Date 2019-01-05T16:00:00.000Z
Date 2019-01-05T16:00:00.000Z

4、参数为时间戳,输出的是国际时间

let i1 =new Date('2018-12-06 0:0:0')
let i2 =new Date('2018-12-06 0:0:0').getTime()
let i3 =new Date(i2)

console.log(i1,i2,i3)

输出:

Date 2018-12-05T16:00:00.000Z

1544025600000

Date 2018-12-05T16:00:00.000Z
 
 

 总结:慎用 2018-12-06 格式的参数,传入Date的参数大都代表本地时间,输出的值都是对应的国际时间

附加控制台返回值图:

友情链接: https://www.cnblogs.com/hjsblogs/p/5842717.html           这个大神说得很具体。

  

  

  

发布了22 篇原创文章 · 获赞 5 · 访问量 4399

猜你喜欢

转载自blog.csdn.net/HW0007/article/details/105062874
今日推荐