js Date时区矫正

JavaScript023

js Date时区矫正,第1张

前言:有时候后端返回给前端的时间格式是这种的

        该时间格式为UTC格式,"+00:00","+"代表是东边的时区,当"+"变成"-"时,代表是西边的时区,后面紧接着的两个数字代表的是具体那个时区,如"+08"代表东八区,":"后的两个数代表和伦敦协调时偏差多少分钟。

        将该时间格式改成"YYYY-mm-dd HH:MM:SS"等格式,则需要处理后端返回时区与本时区时间的偏差。js的Date对象提供getTimezoneOffset函数,用于获取本时区与伦敦协调时的时间差,返回数值的单位是分钟。

        Date对象的toLocaleDateString函数,在PC端和移动端有差别,在安卓移动端会比PC端的返回值多"上午"、"下午"等。

        没有直接使用new Date(value)来获取日期,是因为在IOS系统下,年月日的分隔符只有是"/"的字符串(如"2019/09/09")用new Date(string)得到正确的日期。

        还有另一种格式GMT,相较于UTC格式,GMT没有那么精确,不能具体到毫秒。

        以下内容为追加GMT格式转换

参考:

    JS操作时间 - UNIX时间戳简单介绍  -  阿胜4K

    世界协调时间(UTC)

    MDN Date

js date加一天是什么?一起来看看吧:

js date加一天是一个轻量的 JavaScript 时间日期处理库。与 Moment.js 的 API 设计保持一致,随着moment的包逐渐变大,官方已经决定未来停止维护相关moment.js库,并且官网也推荐使用dayjs库,因为它有很多优势。

其主要特性如下:

1、与 Moment.js 相同的 API 和用法

2、不可变数据(Immutable)

3、支持链式操作(Chainable)

4、只有 2kb 大小(一些高级用法以扩展的形式存在,可按需加载)

5、全浏览器兼容

6、强大的国际化支持(I18n)

代码示例:

1、以当前日期new date()为例,也可以将例中new date()换成任意date对象

var d = new Date()     d.setTime(d.getTime()+24*60*60*1000)     var s = d.getFullYear()+"-" + (d.getMonth()+1) + "-" + d.getDate()

2、获取今天的0时0分0秒

var startDate= new Date(new Date().toLocaleDateString()) //Wed March 09 2022 00:00:00 GMT+0800 (中国标准时间)

3、获取一个月前的日期

var lastM =new Date(new Date().setMonth(new Date().getMonth()-1))//Wed Feb 09 2022 13:38:08 GMT+0800 (中国标准时间)

4、获取一个月前的0时0分0秒

var lastM_start =new Date(new Date(new Date().toLocaleDateString()).setMonth(new Date().getMonth()-1)) //Wed Feb 09 2022 00:00:00 GMT+0800 (中国标准时间)

5、获取前一天的日期

var yesterday = new Date(new Date().setDate(new Date().getDate()-1))//Wed March 08 2022 13:41:39 GMT+0800 (中国标准时间)

6、获取今天的23时59分59秒

var endDate = new Date(new Date(new Date().toLocaleDateString()).getTime()+24*60*60*1000-1)//Wed March 09 2022 23:59:59 GMT+0800 (中国标准时间)

7、获取昨天的23时59分59秒

new Date().setDate(new Date().getDate()-1)).toLocaleDateString()).getTime()+24*60*60*1000-1)//Wed March 08 2022 23:59:59 GMT+0800 (中国标准时间)

Date

对象用于处理日期和时间。

创建

Date

对象的语法:

var

myDate=new

Date()

Date

对象会自动把当前日期和时间保存为其初始值。

参数形式有以下5种:

new

Date("month

dd,yyyy

hh:mm:ss")

new

Date("month

dd,yyyy")

new

Date(yyyy,mth,dd,hh,mm,ss)

new

Date(yyyy,mth,dd)

new

Date(ms)

注意最后一种形式,参数表示的是需要创建的时间和GMT时间1970年1月1日之间相差的毫秒数。各种函数的含义如下:

month:用英文表示月份名称,从January到December

mth:用整数表示月份,从(1月)到11(12月)

dd:表示一个月中的第几天,从1到31

yyyy:四位数表示的年份

hh:小时数,从0(午夜)到23(晚11点)

mm:分钟数,从0到59的整数

ss:秒数,从0到59的整数

ms:毫秒数,为大于等于0的整数

如:

new

Date("January

12,2006

22:19:35")

new

Date("January

12,2006")

new

Date(2006,0,12,22,19,35)

new

Date(2006,0,12)

new

Date(1137075575000)