Javascript 高级编程 5章98页 【Date类型】

186 阅读4分钟

Date类型

使用自 UTC (Coodinated Universal Time, 国际协调时间) 1970年1月1日午夜(零时)开始的毫秒数 来保存日期

  • Date 类型保存的日期 能够横跨 1970年1月1日 之前 或 之后 的 100000000 年

创建 Date

无参 构造函数,创建的对象,自动获得当前日期和时间

var now = new Date();

var now = new Date("May 25, 2004");

等同于:(会在后台调用Date.Parse()

var someDate = new Date(Date.parse("May 25, 2004"));

//GMT时间2000年1月1日午夜零时
var y2k = new Date(Date.UTC(2000, 0));

//GMT时间2005年5月5日下午5:55:55
var allFives = new Date(Date.UTC(2005, 4, 5, 17, 55, 55));

不等同!是本地时间,而不是GMT时间

//本地时间2000年1月1日午夜零时
var y2k = new Date(2000, 0);

//本地时间2005年5月5日下午5:55:55
var allFives = new Date(2005, 4, 5, 17, 55, 55);

Date.Parse()Date.UTC()

  • Date类型的构造函数,传入 表示日期 的毫秒数。以下方法用于得到这个毫秒数
    • Date.Parse(): 接收一个 表示日期字符串
      • 如果字符串表示日期,则返回NaN
      • ECMA-262没有定义 日期格式。因此,这个方法的行为,因浏览器实现和地区而定
      • 将地区设置为美国的浏览器 都接收以下 日期格式
        格式例子
        月/日/年6/13/2004
        英文月名 日,年January 12, 2004
        英文星期几 英文月名 日 年 时:分:秒 时区Tue May 25 2004 00:00:00 GMT-0700
        ISO 8601扩展格式 YYYY-MM-DDTHH:mm:ss.sssZ (仅兼容ECMAScript5时)2004-05-25T00:00:00
    • Date.UTC(): 接收以下参数:
      • (必选)年份
      • (必选)基于0的月份 (一月是0, 二月是1,以此类推)
      • (可选)月中的哪一天 (1到31)(若省略,则为1)
      • (可选)小时数(0到23)(若省略,则为0)
      • (可选)分钟(若省略,则为0)
      • (可选)秒(若省略,则为0)
      • (可选)毫秒数(若省略,则为0)

Date.Parse()Date.UTC()在构建这个毫秒数时,使用不同的信息

Date.now()

调用时刻的 日期和时间 的毫秒数

var start = Date.now();

在不支持Date.now()的浏览器中,可以用+

var start = +new Date();

Date 继承的方法

toLocalString()

会按照 与浏览器 设置的地区 相适应的格式 返回 日期和时间

  • 会包含 AM或PM
  • 不会包含 时区 (因浏览器而异)

toString()

返回 日期和时间

  • 时间为 军用时间 (0到23表示)
  • 包含 时区
  • PST (Pacific Standard Time, 太平洋标准时间)

Date重写的 toLocalString()toString() 在不同浏览器 的格式 可谓大相径庭

Date重写的 toLocalString()toString() 一般只用于调试


valueOf()

  • 不返回 字符串
  • 返回 表示日期的 毫秒数
  • 方便 比较日期值 (用比较操作符)
var date1 = new Date(2007, 0, 1);
var date2 = new Date(2007, 1, 1);

alert(date1 < date2);  //true
alert(date1 > date2); //false

将 日期 格式化为 字符串 的方法

  • toDateString(): (特定于实现)星期几, 月,日, 年
  • toTimeString(): (特定于实现)时,分,秒,时区
  • toLocaleDateString(): (特定于地区)星期几, 月,日, 年
  • toLocaleTimeString(): (特定于实现)时,分,秒
  • toUTCString(): (特定于实现)完整的UTC日期
  • toGMTString(): 存在是为了确保向后兼容。与toUTCString()等价,更推荐使用toUTCString()

以上方法的输出格式,都因浏览器而异

Date类的方法

直接取得 和 设置 日期值 中特定部分的方法,如下:

方法说明
getTime()valueOf()一样。返回表示日期的毫秒数
setTime(毫秒)设置日期,会改变整个日期
getFullYear()4位数的年份,如2007,而不是07
getUTCFullYear()UTC日期的4位数年份
setFullYear(年)传入的必须是4位数的年份
setUTCFullYear(年)
getMonth()0表示一月,11表示十二月
getUTCMonth()
setMonth(月)传入的必须大于0,超过11则增加年份
setUTCMonth(月)
getDate()1到31
getUTCDate()
setDate(日)传入的超过了该月应有的天数,则增加月份
setUTCDate(日)
getDay()0表示星期日,6表示星期六
getUTCDay()
getHours()0到23
getUTCHours()
setHours(时)超过23则增加天数
setUTCHours(时)
getMinutes()0到59
getUTCMinutes()
setMinutes(分)超过59则增加小时数
setUTCMinutes(分)
getSeconds()0到59
getUTCSeconds()
setSeconds(秒)超过59则增加分钟数
setUTCSeconds(秒)
getMilliSeconds()返回日期中的毫秒数
getUTCMilliSeconds()
setMilliSeconds(毫秒)
setUTCMilliSeconds(毫秒)
getTimezoneOffset()返回本地时间宇UTC时间相差得分钟数。例如美国东部标准时间返回300。在某地进入夏令时的情况下,这个值会有所变化