Appearance
Date 类型(日期类型)
创造方式,只有一种
1. 构造函数
js
// 构造方法
var date = new Date()
console.log(date) //Date 2018-08-02T08:48:25.164Z
生成一个日期类型,其参数不同 生成的日期也不同
1.1 没有参数
js
var date = new Date()
console.log(date) //Date 2018-08-02T08:48:25.164Z
1.2 一个参数,且为字符串类型
js
// 通过标准的时间格式
var date1 = new Date("2018-08-03 15:56:28")
// 入参为dateString格式 ,此为可转换为Date的字符串 时间可省略。
// 主要格式一般两种:
// 1、 yyyy-MM-dd HH:mm:ss
// 2、 yyyy/MM/dd HH:mm:ss 推荐的方式
console.log("--------------- new Date ---------")
console.log(new Date("2018-08-03 15:56:28"))
// Fri Aug 03 2018 15:56:28 GMT+0800 (中国标准时间)
// IE : Invalid Date
console.log(new Date("2018-08-03"))
// Fri Aug 03 2018 08:00:00 GMT+0800 (中国标准时间)
console.log(new Date("2018/08/03 15:56:28"))
// Fri Aug 03 2018 15:56:28 GMT+0800 (中国标准时间)
console.log(new Date("2018/08/03"))
// Fri Aug 03 2018 00:00:00 GMT+0800 (中国标准时间)
// 注意:
// 1、省略时间的时候 -的方法 会自动加上本地时区。 如果不省略时区 则在IE下转换失败
1.3 一个参数,是数字类型
js
var date = new Date(1533282988249) //Date 2018-08-02T08:48:25.164Z
1.4 多个参数,全是数字类型
js
var date = new Date(year, month, day, hour, minute, second, millisecond)
- year : 年份 4 位数。 2018
- month : 代表月份的整数值从 0(1 月)到 11(12 月)。 重要: 月份是从 0 开始
- day : 代表一个月中的第几天的整数值,从 1 开始。 (1-31)
- hour : 代表一天中的小时数的整数值 (24 小时制)。 (0-23)
- minute : 分钟数。 从 0 开始。 (0-59)
- second : 秒数。 从 0 开始。 (0-59)
- millisecond : 毫秒部分的整数值
js
// 通过多个参数
var date2 = new Date(2018, 7, 3, 15, 56, 28)
var date2 = new Date(2018, 7, 3) //Fri Aug 03 2018 00:00:00 GMT+0800 (中国标准时间
// Fri Aug 03 2018 15:56:28 GMT+0800 (中国标准时间) Fri Aug 03 2018 15:56:28 GMT+0800 (中国标准时间) Fri Aug 03 2018 15:56:28 GMT+0800 (中国标准时间)
console.log(date + " " + date1 + " " + date2)
console.log(new Date(2018)) //Thu Jan 01 1970 08:00:02 GMT+0800 (中国标准时间)
// 注意 :
// 1、 毫秒数是自1970年1月1日00:00:00 (世界标准时间) 起经过的毫秒数。
// 2、 传入的为日期字符串的时候 月份不需要-1 而通过多个参数创建的时候 月份需要减 -
2. 静态方法
- Date.now()
- Date.parse()
- Date.UTC()
2.1 Date.now()
获取当前时间的毫秒数
js
console.log(Date.now()) //1533199691803 返回自1970年1月1日00:00:00到当前时间的毫秒数
2.2 Date.parse()
获取指定字符串时间格式的毫秒数
js
console.log(Date.parse("2018-07-02 10:10:10")) // 1530497410000
2.3 Date.UTC()
获取多参数时间的毫秒数
js
console.log(Date.UTC(2018, 7, 3)) // 1533254400000 //Fri Aug 03 2018 08:00:00 GMT+0800 (中国标准时间)
1、 可见 new Date() 三种入参方式其实就是调用三种静态方法,但是有区别
1、 new Date() ,new Date(dataString ) 与 Date.now(),Date.parse() 前一个返回的是国际时间标准格式 后一个返回的是毫秒数。
2、 new Date(2018,7,2)与 Date.UTC(2018,7,2) 的区别
- 返回值格式不同
new Date(2018,7,2)
返回一个时间格式Date.UTC(2018,7,2)
一个毫秒数。
- 时区问题
new Date(2018,7,2)
没有时间的时候一本地时区为标准,Date.UTC(2018,7,2)
以国际时间+时区 导致时间为 08:00:00
实例方法
1、 get 方法
- date.getTime() 返回一个时间的格林威治时间数值。 即毫秒数
- date.getDay() 根据本地时间,返回一个具体日期中一周的第几天,0 表示星期天。
- date.getFullYear() 根据本地时间返回指定日期的年份。
- date.getMonth() 返回一个指定的日期对象的月份,。
- date.getDate() 根据本地时间,返回一个指定的日期对象为一个月中的第几天。 即时期
- date.getHours() 根据本地时间,返回一个指定的日期对象的小时。
- date.getMinutes() 根据本地时间,返回一个指定的日期对象的份数。
- date.getSeconds() 根据本地时间,返回一个指定的日期对象的秒数。
js
var now = new Date("2018/08/03 16:28:06") // 2018/08/03
// get方法
// getTime() 返回一个时间的格林威治时间数值。 即毫秒数
console.log(now.getTime()) // 1533284886000
// getDay() 根据本地时间,返回一个具体日期中一周的第几天,0 表示星期天。
console.log(now.getDay()) // 5 星期五
// getFullYear() 根据本地时间返回指定日期的年份。
console.log(now.getFullYear()) // 2018
// getMonth() 返回一个指定的日期对象的月份,为基于0的值(0表示一年中的第一月)。
console.log(now.getMonth()) // 7 8月份
// getDate() 根据本地时间,返回一个指定的日期对象为一个月中的第几天。 即时期
console.log(now.getDate()) // 3
// getHours() 根据本地时间,返回一个指定的日期对象的小时。
console.log(now.getHours()) // 16
// getMinutes() 根据本地时间,返回一个指定的日期对象的份数。
console.log(now.getMinutes()) // 28
// getSeconds() 根据本地时间,返回一个指定的日期对象的秒数。
console.log(now.getSeconds()) // 6
2.2、 set 方法
- date.setFullYear() 设置 Date 对象的年份值;4 位年份。返回的毫秒数
- date.setMonth(month,date) 设置 Date 对象的月份值。0 表示 1 月,11 表示 12 月。。
- date.setDate(date) 设置 Date 对象的月份中的日期值;值的范围 1~31 。
- date.setHours(hour, min, sec, msec) 设置 Date 对象的小时值。
- date.settMinutes( min, sec, msec) 设置 Date 对象的分钟值。
- date.setSeconds(sec, msec) 设置 Date 对象的毫秒值。
js
// setFullYear(year, month, date) :设置Date对象的年份值;4位年份。返回的毫秒数
console.log(now.setFullYear(2017)) // 1501748886000
console.log(new Date(now.setFullYear(2017, 6, 3))) // Mon Jul 03 2017 16:28:06 GMT+0800 (中国标准时间)
// setMonth(month,date) :设置Date对象的月份值。0表示1月,11表示12月。
console.log(now.setMonth(6)) // 1499070486000
console.log(new Date(now.setMonth(6, 3))) //Mon Jul 03 2017 16:28:06 GMT+0800 (中国标准时间)
// setDate(date) :设置Date对象的月份中的日期值;值的范围1~31 。
console.log(now.setDate(3)) //1499070486000
// setHours(hour, min, sec, msec) :设置Date对象的小时值。
console.log(now.setHours(23)) //1499095686000
console.log(now.setHours(23, 59, 59, 1000)) //1499097600000
// setMinutes(min, sec, msec) :设置Date对象的分钟值。
console.log(now.setMinutes(59)) //1499101140000
console.log(now.setMinutes(59, 59, 1000)) //1499101200000
// setSeconds(sec, msec) :设置Date对象的秒数值。
console.log(now.setSeconds(59)) //1499101259000
console.log(now.setSeconds(59, 1000)) //1499101260000
// setMilliseconds(msec) :设置Date对象的毫秒值。
console.log(now.setMilliseconds(1000)) //1499101261000
2.3、 转换方法
- date.toString()
- date.toLocaleString()
- date.toDateString()
- date.toLocaleDateString()
- date.toTimeString()
- date.toLocaleTimeString()
- date.valueOf()
转换方法都存在各自的问题,所以日期的转换,最好使用插件或者自定义方法,推荐 moment.js Date.js
js
// date.toString()
// 返回一个美式时间的字符串
var date = new Date("2018/08/03 16:28:06")
console.log(date.toString()) // Fri Aug 03 2018 16:28:06 GMT+0800 (中国标准时间)
// 返回当前地区的时间字符串
console.log(date.toLocaleString()) //2018/8/3 下午4:28:06
console.log(date.toLocaleString("zh-CN")) //2018/8/3 下午4:28:06
// 返回美式时间的日期字符串
console.log(date.toDateString()) //Fri Aug 03 2018
// 返回当前地区的日期字符串
console.log(date.toLocaleDateString()) //2018/8/3
// 返回美式时间的时间字符串
console.log(date.toTimeString()) //16:28:06 GMT+0800 (中国标准时间)
// 返回当前地区的时间字符串
console.log(date.toLocaleTimeString()) //下午4:28:06
// 返回当前地区的毫秒数
console.log(date.valueOf()) //1533284886000