日期简介:
说明: Date属于引用类型,引用类型是一种数据结构,用于将数据和功能组织在一起,如var newDate = new Date(),这行代码创建了Date引用类型的一个新实例,保存在newDate中,使用的构造函数是Date,它只为新对象定义了默认的属性和方法.
日期类型:
说明: Js提供了Date类型来处理时间和日期,Date类型内置一些列获取或设置日期时间信息的方法,日期类型初始化参数以时间戳保存
/* * 创建日期对象 */ var newDate = new Date() console.log(newDate) var newDate = new Date('6/13/2004') console.log(newDate) var newDate = new Date('January 12, 2004') console.log(newDate) var newDate = new Date('Tue May 25 2004 00:00:00 GMT-0700') console.log(newDate) var newDate = new Date('2004-05-25T07:00:00.000Z') console.log(newDate)
注意: 日期对象初始化默认参数是时间戳,当然也支持字符串,但是必须Date.parse(string)可以解析为时间戳,由于任何对象都有公共的.toString()/.toLocalString()/.valueOf()方法,所以默认打印时候日期对象自动被转换为字符串,默认为当前时间
格式日期:
说明: Date对象还有一些专门的用于将日期转换为特定字符串的方法
方法名称 | 方法说明 |
toLocaleDateString() | 以特定格式显示年/月/日,和本时区对应 |
toLocaleTimeString() | 以特定格式显示上午|下午时:分:秒,和本时区对应 |
var newDate = new Date('6/13/2004') console.log(newDate.toLocaleDateString()) console.log(newDate.toLocaleTimeString())
组件方法:
说明: 组件方法是为我们单独获取各种时间/日期的值而设置的,这些方法中,有带UTC的,有不带UTC的,UTC日期指的是在没有时区偏差的情况下的日期值
方法名称 | 方法说明 |
getTime() | 返回表示日期的毫秒数,与valueOf()方法返回值相同 |
setTime(seconds) | 以毫秒数设置日期,会改变整个日期 |
getFullYear() | 取得四位的年份(如2007而非仅07) |
setFullYear() | 设置日期的年份,传入的年份值必须是4位数字 |
getMonth() | 返回日期的月份,其中0表示一月,11表示十二月 |
setMonth(num) | 设置日期的月份,传入的月份值必须大于0,超过11则增加年份 |
getDate() | 返回日期月份中的天数(1到31) |
setDate(num) | 设置日期月份中的天数,如果传入值超过了月中应有的天数则增加月份 |
getDay() | 返回日期中星期的星期几,0表示星期日,6表示星期六 |
getHours() | 返回日期中的小时数(0到23) |
setHours(num) | 设置日期中的小时数,传入的值超过了23则增加月份中的天数 |
getMinutes() | 返回日期中的分钟数(0到59) |
setMinutes(num) | 设置日期中的分钟数,传入的值超过59则增加小时数 |
getSeconds() | 获取日期中的秒数 |
setSeconds(num) | 设置日期中的秒数,传入的值超过了59会增加分钟数 |
getMilliseconds() | 返回日期中的毫秒数 |
setMilliseconds(num) | 设置日期中的毫秒数 |
getTimezoneOffset() | 获取时区偏差分钟数 |
var newDate = new Date() // UTC时间转换为本地时间 var offset = newDate.getTimezoneOffset() newDate.setMinutes(newDate.getMinutes()-offset) console.log(newDate)
注意: 以上方法除了getTimezoneOffset(),其它都具有UTC功能,表示世界协调时间,如果是UTC时间,显示时候需要转换为本地时间,UTC时间和本地时间的转换可先使用
类型方法:
/* 解析日期字符串 - Date类方法.parse(),解析失败返回false * 格式一: '月/日/年' 8/30/2016 * 格式二: '英文月名 日 年' August 30, 2016 * 格式三: '英文星期 英文月名 日 年 时:分:秒 时区' * */ // 尝试解析如上日期格式 console.log(Date.parse('8/30/2016')) // 隐式调用Date.parse解析后生成日期对象 console.log(new Date('8/30/2016')) // 先解析为UTC时间再生成日期时间对象 console.log(new Date(Date.parse('8/30/2016'))) // 生成UTC时间戳 - Date类方法.UTC() console.log(new Date(Date.UTC(2016, 8, 30, 14, 39, 16)))