时间的几种格式以及它们之间的相互转换 (js)

时间的几种格式介绍
Date 对象用于处理日期和时间
有四种方式初始化日期
1、new Date();
2、new Date(value);
3、new Date(dateString);
4、new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);
简单解释一下这四种方式

  1. 不传参,获取的是当前时间;及也为中国标准时间格式
    Wed Mar 17 2019 09:54:21 GMT+0800 (中国标准时间)
  2. 传时间戳,时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数,由10位数字组成(毫秒是13位),这里传10位13位都可以;
  3. 传时间的字符串形式,如 ‘2019/7/17 14:40:30’ 或 ‘2019-7-17’,这里我试了一下以 ‘/’ 和 ‘-’ 为年月日分隔符都是可以的,空格和逗号不行,年月日要完整,时分秒可不用写全;
  4. 传以逗号分隔的时间,如 2019,7, 17, 14, 40, 30 ,这个试了一下年月是必须的,其他可以不写全。注意,month 代表的月份是从0(1月)到11(12月)。

时间格式之间的相互转换
1、时间戳转换为标准时间格式
就是上面所说的第二种方式,直接将时间戳作为参数传入new Date()

let date = new Date(timestamp)

2、标准时间格式转换为时间戳
利用 Date 对象的 getTime() 方法:

let timestamp = new Date().getTime()

这里获得是13位时间戳,即毫秒

3、标准时间格式转换为指定格式
可以利用 Date 对象的一些方法

date.getFullYear() // 获取完整的年份

date.getMonth() // 获取月份(0-11,0代表1月,用的时候记得加上1)

date.getDate() // 获取日(1-31)

date.getTime() // 获取时间(从1970.1.1开始的毫秒数)

date.getHours() // 获取小时数(0-23)

date.getMinutes() // 获取分钟数(0-59)

date.getSeconds() // 获取秒数(0-59)

需要什么样的时间格式,利用上述方法获得需要的部分再拼接起来。

4、时间戳转换为指定格式
先将时间戳转换为标准时间格式,再按三转换为指定格式。
我写了个公共的方法

export function dateTime(time){
	var d = new Date(time);
	var a= d.getFullYear() + '-' + (d.getMonth() + 1 < 10 ? "0" + (d.getMonth() + 1) : d.getMonth() + 1) + '-' + (d.getDate()<10 ? "0" +d.getDate():d.getDate())+ ' ' + (d.getHours()<10 ?"0"+d.getHours():d.getHours()) + ':' + (d.getMinutes()<10 ? "0" + d.getMinutes(): d.getMinutes()) + ':' + (d.getSeconds()<10 ? "0" + d.getSeconds() : d.getSeconds() );
	return a;
}

这里传入的time为时间戳,返回的格式是‘2021-02-02 00:00:00’

补充:当我们想处理时间,例如加一天,减一天,要先转换成时间戳再进行计算。如要获得当前时间的前一小时,可按如下方法计算:
new Date(new Date().getTime() - 16060*1000)

需要注意的是苹果系统下不支持“yyyy-MM-dd”和“yyyy.MM.dd”的日期格式,如:new Date(“2016-06-27”);会提示Invalid Date;
支持"yyyy/MM/dd"日期格式;
所以如果传参的话,要用replace()方法替换一下

time.replace(/-/g, “/”)

你可能感兴趣的:(js,js)