日期简介:

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