日期简介:

说明: 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)))