时间的几种格式介绍
Date 对象用于处理日期和时间
有四种方式初始化日期
1、new Date();
2、new Date(value);
3、new Date(dateString);
4、new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);
简单解释一下这四种方式
- 不传参,获取的是当前时间;及也为中国标准时间格式
Wed Mar 17 2019 09:54:21 GMT+0800 (中国标准时间) - 传时间戳,时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数,由10位数字组成(毫秒是13位),这里传10位13位都可以;
- 传时间的字符串形式,如 ‘2019/7/17 14:40:30’ 或 ‘2019-7-17’,这里我试了一下以 ‘/’ 和 ‘-’ 为年月日分隔符都是可以的,空格和逗号不行,年月日要完整,时分秒可不用写全;
- 传以逗号分隔的时间,如 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, “/”)