99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Date 對象

2018-06-16 15:48 更新

Date 對象的概述和抽象操作的定義

 下面的抽象操作函數(shù)用來操作時間值(15.9.1.1 定義)。注:任何情況下,如果這些函數(shù)之一的任意參數(shù)是 NaN,則結(jié)果將是 NaN。

時間值和時間范圍

 一個 Date 對象包含一個表示特定時間瞬間的毫秒的數(shù)字值。這樣的數(shù)字值叫做 時間值 。一個時間值也可以是 NaN,說明這個 Date 對象不表示特定時間瞬間。

 ECMAScript 中測量的時間是從協(xié)調(diào)世界時 1970 年 1 月 1 日開始的毫秒數(shù)。在時間值中閏秒是被忽略的,假設(shè)每天正好有 86,400,000 毫秒。ECMAScript 數(shù)字值可表示的所有從–9,007,199,254,740,991 到 9,007,199,254,740,991 的整數(shù);這個范圍足以衡量協(xié)調(diào)世界時 1970 年 1 月 1 日前后約 285,616 年內(nèi)任何時間瞬間的精確毫秒。

 ECMAScript Date 對象支持的實際時間范圍是略小一些的:相對協(xié)調(diào)世界時 1970 年 1 月 1 日午夜 0 點的精確的–100,000,000 天到 100,000,000 天。這給出了協(xié)調(diào)世界時 1970 年 1 月 1 日前后 8,640,000,000,000,000 毫秒的范圍。

 精確的協(xié)調(diào)世界時 1970 年 1 月 1 日午夜 0 點用 +0 表示。

天數(shù)和天內(nèi)時間

 一個給定時間值 t 所屬的天數(shù)是

Day(t) = floor(t / msPerDay)

 其中每天的毫秒數(shù)是

msPerDay = 86400000

 余數(shù)叫做天內(nèi)時間

TimeWithinDay(t) = t modulo msPerDay

年數(shù)

 ECMAScript 使用一個推算公歷系統(tǒng),來將一個天數(shù)映射到一個年數(shù),并確定在那年的月份的日期。在這個系統(tǒng)中,閏年是且僅是(可被 4 整除)且((不可被 100 整除)或(可被 400 整除))的年份。因此,y 年的天的數(shù)目定義為

DaysInYear(y) = 365 { 如果 (y 取模 4) ≠ 0 } = 366 { 如果 (y 取模 4) = 0 且 (y 取模 100) ≠ 0 } = 365 { 如果 (y 取模 100) = 0 且 (y 取模 400) ≠ 0 } = 366 { 如果 (y 取模 400) = 0 }

 所有非閏年有 365 天,其中每月的天的數(shù)目是常規(guī)的。閏年的二月里有個多出來的一天。 y 年第一天的天數(shù)是 :

DayFromYear(y) = 365 × (y?1970) + floor((y?1969)/4) ? floor((y?1901)/100) + floor((y?1601)/400)

 y 年的起始時間值是:

TimeFromYear(y) = msPerDay × DayFromYear(y)

 一個時間值決定的年數(shù)是:

YearFromTime(t) = 滿足條件 TimeFromYear(y) ≤ t 的最大整數(shù) y (接近正無窮)

 若時間值在閏年內(nèi),閏年函數(shù)返回 1,否則返回 0:

InLeapYear(t) = 0 { 如果 DaysInYear(YearFromTime(t)) = 365 } = 1 { 如果 DaysInYear(YearFromTime(t)) = 366 }

月數(shù)

 月份是由閉區(qū)間 0 到 11 內(nèi)的一個整數(shù)確定。一個時間值 t 到一個月數(shù)的映射 MonthFromTime(t) 的定義為:

MonthFromTime(t) = 0 if 0 ≤ DayWithinYear(t) < 31 = 1 if 31 ≤ DayWithinYear (t) < 59+InLeapYear(t) = 2 if 59+InLeapYear(t) ≤ DayWithinYear (t) < 90+InLeapYear(t) = 3 if 90+InLeapYear(t) ≤ DayWithinYear (t) < 120+InLeapYear(t) = 4 if 120+InLeapYear(t) ≤ DayWithinYear (t) < 151+InLeapYear(t) = 5 if 151+InLeapYear(t) ≤ DayWithinYear (t) < 181+InLeapYear(t) = 6 if 181+InLeapYear(t) ≤ DayWithinYear (t) < 212+InLeapYear(t) = 7 if 212+InLeapYear(t) ≤ DayWithinYear (t) < 243+InLeapYear(t) = 8 if 243+InLeapYear(t) ≤ DayWithinYear (t) < 273+InLeapYear(t) = 9 if 273+InLeapYear(t) ≤ DayWithinYear (t) < 304+InLeapYear(t) = 10 if 304+InLeapYear(t) ≤ DayWithinYear (t) < 334+InLeapYear(t) = 11 if 334+InLeapYear(t) ≤ DayWithinYear (t) < 365+InLeapYear(t)

 其中

DayWithinYear(t) = Day(t)?DayFromYear(YearFromTime(t))

 月數(shù)值 0 指一月;1 指二月;2 指三月;3 指四月;4 指五月;5 指六月;6 指七月;7 指八月;8 指九月;9 指十月;10 指十一月;11 指十二月。注:MonthFromTime(0) = 0,對應(yīng) 1970 年 1 月 1 日,星期四。

日期數(shù)

 一個日期數(shù)用閉區(qū)間 1 到 31 內(nèi)的一個整數(shù)標識。從一個時間值 t 到一個日期數(shù)的映射 DateFromTime(t) 的定義為:

DateFromTime(t) = DayWithinYear(t)+1 if MonthFromTime(t)=0 = DayWithinYear(t)?30 if MonthFromTime(t)=1 = DayWithinYear(t)?58?InLeapYear(t) if MonthFromTime(t)=2 = DayWithinYear(t)?89?InLeapYear(t) if MonthFromTime(t)=3 = DayWithinYear(t)?119?InLeapYear(t) if MonthFromTime(t)=4 = DayWithinYear(t)?150?InLeapYear(t) if MonthFromTime(t)=5 = DayWithinYear(t)?180?InLeapYear(t) if MonthFromTime(t)=6 = DayWithinYear(t)?211?InLeapYear(t) if MonthFromTime(t)=7 = DayWithinYear(t)?242?InLeapYear(t) if MonthFromTime(t)=8 = DayWithinYear(t)?272?InLeapYear(t) if MonthFromTime(t)=9 = DayWithinYear(t)?303?InLeapYear(t) if MonthFromTime(t)=10 = DayWithinYear(t)?333?InLeapYear(t) if MonthFromTime(t)=11

星期數(shù)

 特定時間值 t 對應(yīng)的星期數(shù)的定義為:

WeekDay(t) = (Day(t) + 4) modulo 7

 星期數(shù)的值 0 指星期日;1 指星期一;2 指星期二;3 指星期三;4 指星期四;5 指星期五;6 指星期六。注:WeekDay(0) = 4, 對應(yīng) 1970 年 1 月 01 日 星期四。

本地時區(qū)校準

 期望一個 ECMAScript 的實現(xiàn)確定本地時區(qū)校準。本地時區(qū)校準是一個毫秒為單位的值 LocalTZA,它加上 UTC 代表本地標準時間。LocalTZA 不體現(xiàn)夏令時。LocalTZA 值不隨時間改變,但只取決于地理位置。

夏令時校準

 期望一個 ECMAScript 的實現(xiàn)確定夏令時算法。確定夏令時校準的算法 DaylightSavingTA(t),以毫秒為單位,必須只依賴下面四個項目:

 (1) 自本年開始以來的時間

t – TimeFromYear(YearFromTime(t))

 (2) t 是否在閏年內(nèi)

InLeapYear(t)

 (3) 本年第一天的星期數(shù)

WeekDay(TimeFromYear(YearFromTime(t))

 (4) 地理位置。

 The implementation of ECMAScript should not try to determine whether the exact time was subject to daylight saving time, but just whether daylight saving time would have been in effect if the current daylight saving time algorithm had been used at the time. This avoids complications such as taking into account the years that the locale observed daylight saving time year round.

 If the host environment provides functionality for determining daylight saving time, the implementation of ECMAScript is free to map the year in question to an equivalent year (same leap-year-ness and same starting week day for the year) for which the host environment provides daylight saving time information. The only restriction is that all equivalent years should produce the same result.

本地時間

 從協(xié)調(diào)世界時到本地時間的轉(zhuǎn)換,定義為

LocalTime(t) = t + LocalTZA + DaylightSavingTA(t)

 從本地時間到協(xié)調(diào)世界時的轉(zhuǎn)換,定義為

UTC(t) = t – LocalTZA – DaylightSavingTA(t – LocalTZA)

 UTC(LocalTime(t)) 不一定總是等于 t。

小時 , 分鐘 , 秒 , 毫秒

 以下函數(shù)用于分解時間值:

HourFromTime(t) = floor(t / msPerHour) modulo HoursPerDay MinFromTime(t) = floor(t / msPerMinute) modulo MinutesPerHour SecFromTime(t) = floor(t / msPerSecond) modulo SecondsPerMinute msFromTime(t) = t modulo msPerSecond

 其中

HoursPerDay = 24 MinutesPerHour = 60 SecondsPerMinute = 60 msPerSecond = 1000 msPerMinute = 60000 = msPerSecond × SecondsPerMinute msPerHour = 3600000 = msPerMinute × MinutesPerHour

MakeTime (hour, min, sec, ms)

 MakeTime 抽象操作用它的四個參數(shù)算出一個毫秒數(shù),參數(shù)必須是 ECMAScript 數(shù)字值。此抽象操作運行如下:

  1. 如果 hour 不是有限的或 min 不是有限的或 sec 不是有限的或 ms 不是有限的 , 返回 NaN。
  2. 令 h 為 ToInteger(hour).
  3. 令 m 為 ToInteger(min).
  4. 令 s 為 ToInteger(sec).
  5. 令 milli 為 ToInteger(ms).
  6. 令 t 為 h * msPerHour + m * msPerMinute + s * msPerSecond + milli, 執(zhí)行的四則運算根據(jù) IEEE 754 規(guī)則(這就像使用 ECMAScript 運算符 * 和 + 一樣)。
  7. 返回 t。

MakeDay (year, month, date)

 MakeDay 抽象操作用它的三個參數(shù)算出一個天數(shù),參數(shù)必須是 ECMAScript 數(shù)字值。此抽象操作運行如下:

  1. 如果 year 不是有限的或 month 不是有限的或 date 不是有限的 , 返回 NaN.
  2. 令 y 為 ToInteger(year).
  3. 令 m 為 ToInteger(month).
  4. 令 dt 為 ToInteger(date).
  5. 令 ym 為 y + floor(m /12).
  6. 令 mn 為 m modulo 12.
  7. 找一個滿足 YearFromTime(t) == ym 且 MonthFromTime(t) == mn 且 DateFromTime(t) == 1 的 t 值 ; 但如果這些條件是不可能的(因為有些參數(shù)超出了范圍), 返回 NaN.
  8. 返回 Day(t) + dt ? 1.

MakeDate (day, time)

 MakeDate 抽象操作用它的兩個參數(shù)算出一個毫秒數(shù),參數(shù)必須是 ECMAScript 數(shù)字值。此抽象操作運行如下:

  1. 如果 day 不是有限的或 time 不是有限的 , 返回 NaN.
  2. 返回 day × msPerDay + time.

TimeClip (time)

 TimeClip 抽象操作用它的參數(shù)算出一個毫秒數(shù),參數(shù)必須是 ECMAScript 數(shù)字值。此抽象操作運行如下:

  1. 如果 time 不是有限的 , 返回 NaN.
  2. 如果 abs(time) > 8.64 x 1015, 返回 NaN.
  3. 返回 ToInteger(time) 和 ToInteger(time) + (+0) 之一,這依賴于實現(xiàn) ( 加正一是為了將 ?0 轉(zhuǎn)換成 +0)。

 第 3 步的重點是說允許實現(xiàn)自行選擇時間值的內(nèi)部表示形式,如 64 位有符號整數(shù)或 64 位浮點數(shù)。根據(jù)不同的實現(xiàn),這個內(nèi)部表示可能區(qū)分也可能無法區(qū)分 ?0 和 +0。

日期時間字符串格式

 ECMAScript 定義了一個基于簡化的 ISO 8601 擴展格式的日期時間的字符串互換格式,格式為:YYYY-MM-DDTHH:mm:ss.sssZ

 其中個字段為:

 YYYY 是公歷中年的十進制數(shù)字。

 - 在字符串中直接以“-” ( 破折號 ) 出現(xiàn)兩次。

 MM 是一年中的月份,從 01 ( 一月 ) 到 12 ( 十二月 )。

 DD 是月份中的日期,從 01 到 30。

 T 在字符串中直接以“T”出現(xiàn),用來表明時間元素的開始。

 HH 是用兩個十進制數(shù)字表示的,自午夜 0 點以來的小時數(shù)。

 : 在字符串中直接以“:” ( 冒號 ) 出現(xiàn)兩次。

 mm 是用兩個十進制數(shù)字表示的,自小時開始以來的分鐘數(shù)。

 ss 是用兩個十進制數(shù)字表示的,自分開始以來的秒數(shù)。

 . 在字符串中直接以“.” ( 點 ) 出現(xiàn)。

 sss 是用三個十進制數(shù)字表示的,自秒開始以來的毫秒數(shù)。

 Z 是時區(qū)偏移量,由(“Z” ( 指 UTC) 或“+” 或 “-”)和后面跟著的時間表達式 hh:mm 組成。

 這個格式包括只表示日期的形式:

YYYY YYYY-MM YYYY-MM-DD

 這個格式還包括“日期時間”形式,它由上面的只表示日期的形式之一和緊跟在后面的“T”和以下時間形式之一和可選的時區(qū)偏移量組成:

THH:mm THH:mm:ss THH:mm:ss.sss

 所有數(shù)字必須是 10 進制的。如果缺少 MM 或 DD 字段,用“01”作為它們的值。如果缺少 mm 或 ss 字段,用“00”作為它們的值,對于缺少的 sss 用“000”作為它的值。對于缺少的時區(qū)偏移量用“Z”。

 一個格式字符串里有非法值(越界以及語法錯誤),意味著這個格式字符串不是有效的本節(jié)描述格式的實例。

 由于每天的開始和結(jié)束都在午夜,倆符號 00:00 和 24:00 可區(qū)分這樣的可以是同一時間的兩個午夜。這意味著兩個符號 1995-02-04T24:00 和 1995-02-05T00:00 精準的指向同一時刻。

 不存在用來規(guī)范像 CET, EST 這樣的民間時區(qū)縮寫的國際標準。有時相同的縮寫甚至使用不同的時區(qū)。出于這個原因,ISO 8601 和這里的格式指定數(shù)字來表示時區(qū)。

擴展的年

 ECMAScript 需要能表示 6 位數(shù)年份(擴展的年份)的能力;協(xié)調(diào)世界時 1970 年 1 月 1 日前后分別約 285,616 年。對于表示 0 年之前或 9999 年之后的年份,ISO 8601 允許對年的表示法進行擴展,但只能在發(fā)送和接受信息的雙方有事先共同約定的情況下才能擴展。在已經(jīng)簡化的 ECMAScript 的格式中這樣擴展的年份表示法有 2 個額外的數(shù)字和始終存在的前綴符號 + 或 - 。0 年被認為是正的,因此用 + 符號作為前綴。

 擴展年的示例

-283457-03-21T15:00:59.008Z 283458 B.C. -000001-01-01T00:00:00Z 2 B.C. +000000-01-01T00:00:00Z 1 B.C. +000001-01-01T00:00:00Z 1 A.D. +001970-01-01T00:00:00Z 1970 A.D. +002009-12-15T00:00:00Z 2009 A.D. +287396-10-12T08:59:00.992Z 287396 A.D.

作為函數(shù)調(diào)用 Date 構(gòu)造器

 當(dāng)把 Date 作為函數(shù)來調(diào)用,而不作為構(gòu)造器,它返回一個表示當(dāng)前時間(協(xié)調(diào)世界時)的字符串。

 函數(shù)調(diào)用 Date(…) 的結(jié)果和用相同參數(shù)調(diào)用表達式 new Date(…) 創(chuàng)建的對象是不同的。

Date ( [ year [, month [, date [, hours [, minutes [, seconds [, ms ] ] ] ] ] ] ] )

 所有參數(shù)都是可選的;接受提供的任何參數(shù),但被完全忽略。返回一個仿佛是用表達式 (new Date()).toString() 創(chuàng)建的字符串,這里的 Date 是標準內(nèi)置構(gòu)造器,toString 是標準內(nèi)置方法 Date.prototype.toString。

Date 構(gòu)造器

 當(dāng)把 Date 作為 new 表達式的一部分來調(diào)用,它是個構(gòu)造器:它初始化新創(chuàng)建的對象。

new Date (year, month [, date [, hours [, minutes [, seconds [, ms ] ] ] ] ] )

 當(dāng)用二到七個參數(shù)調(diào)用 Date 構(gòu)造器,它用 year, month, 還有 ( 可選的 ) date, hours, minutes, seconds, ms 來計算時間。

 新構(gòu)造對象的 [[Prototype]] 內(nèi)部屬性設(shè)定為原始的時間原型對象,它是 Date.prototype(15.9.4.1) 的初始值。

 新構(gòu)造對象的 [[Class]] 內(nèi)部屬性設(shè)定為 "Date"。

 新構(gòu)造對象的 [[Extensible]] 內(nèi)部屬性設(shè)定為 ture。

 新構(gòu)造對象的 [[PrimitiveValue]] 內(nèi)部屬性按照以下步驟設(shè)定:

  1. 令 y 為 ToNumber(year).
  2. 令 m 為 ToNumber(month).
  3. 如果提供了 date ,則令 dt 為 ToNumber(date); 否則令 dt 為 1.
  4. 如果提供了 hours ,則令 h 為 ToNumber(hours); 否則令 h 為 0.
  5. 如果提供了 minutes ,則令 min 為 ToNumber(minutes); 否則令 min 為 0.
  6. 如果提供了 seconds ,則令 s 為 ToNumber(seconds); 否則令 s 為 0.
  7. 如果提供了 ms ,則令 milli 為 ToNumber(ms); 否則令 milli 為 0.
  8. 如果 y 不是 NaN 且 0 ≤ ToInteger(y) ≤ 99, 則令 yr 為 1900+ToInteger(y); 否則令 yr 為 y.
  9. 令 finalDate 為 MakeDate(MakeDay(yr, m, dt), MakeTime(h, min, s, milli)).
  10. 設(shè)定新構(gòu)造對象的 [[PrimitiveValue]] 內(nèi)部屬性為 TimeClip(UTC(finalDate)).

new Date (value)

 新構(gòu)造對象的 [[Prototype]] 內(nèi)部屬性設(shè)定為原始的時間原型對象,它是 Date.prototype(15.9.4.1) 的初始值。

 新構(gòu)造對象的 [[Class]] 內(nèi)部屬性設(shè)定為 "Date"。

 新構(gòu)造對象的 [[Extensible]] 內(nèi)部屬性設(shè)定為 ture。

 新構(gòu)造對象的 [[PrimitiveValue]] 內(nèi)部屬性按照以下步驟設(shè)定:

  1. 令 v 為 ToPrimitive(value).
  2. 如果 Type(v) 是 String, 則用與 parse 方法 (15.9.4.2) 完全相同的方式將 v 解析為一個日期時間;令 V 為這個日期時間的時間值。
  3. 否則 , 令 V 為 ToNumber(v).
  4. 設(shè)定新構(gòu)造對象的 [[PrimitiveValue]] 內(nèi)部屬性為 TimeClip(V),并返回這個值。

new Date ( )

 新構(gòu)造對象的 [[Prototype]] 內(nèi)部屬性設(shè)定為原始的時間原型對象,它是 Date.prototype(15.9.4.1) 的初始值。

 新構(gòu)造對象的 [[Class]] 內(nèi)部屬性設(shè)定為 "Date"。

 新構(gòu)造對象的 [[Extensible]] 內(nèi)部屬性設(shè)定為 ture。

 新構(gòu)造對象的 [[PrimitiveValue]] 內(nèi)部屬性設(shè)定為表示當(dāng)前時間的時間值(協(xié)調(diào)世界時)。

Date 構(gòu)造器的屬性

 Date 構(gòu)造器的 [[Prototype]] 內(nèi)部屬性的值是函數(shù)原型對象 (15.3.4)。

 除了內(nèi)部屬性和 length 屬性 ( 值為 7) 之外,Date 構(gòu)造器還有以下屬性:

Date.prototype

 Date.prototype 的初始值是內(nèi)置的 Date 原型對象 (15.9.5)。

 此屬性有特性 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }。

Date.parse (string)

 parse 函數(shù)對它的參數(shù)應(yīng)用 ToString 操作并將結(jié)果字符串解釋為一個日期和時間;返回一個數(shù)字值,是對應(yīng)這個日期時間的 UTC 時間值。字符串可解釋為本地時間,UTC 時間,或某個其他時區(qū)的時間,這取決于字符串里的內(nèi)容。此函數(shù)首先嘗試根據(jù)日期時間字符串格式(15.9.1.15)里的規(guī)則來解析字符串的格式。如果字符串不符合這個格式此函數(shù)可回退,用任意實現(xiàn)定義的試探方式或日期格式。無法識別的字符串或日期時間包含非法元素值,將導(dǎo)致 Date.parse 返回 NaN。

 在所有屬性都指向它們的初始值的情況下,如果 x 是一個在特定 ECMAScript 的實現(xiàn)里的毫秒數(shù)為零的任意 Date 對象,則在這個實現(xiàn)中以下所有表達式應(yīng)產(chǎn)生相同數(shù)字值:

x.valueOf() Date.parse(x.toString()) Date.parse(x.toUTCString()) Date.parse(x.toISOString())

 然而,表達式

Date.parse( x.toLocaleString())

 是不需要產(chǎn)生與前面三個表達參數(shù)相同的數(shù)字值。通常,在給定的字符串不符合日期時間字符串格式(15.9.1.15)時,Date.parse 的產(chǎn)生值是依賴于實現(xiàn),并且在同一實現(xiàn)中 toString 或 toUTCString 方法不能產(chǎn)生不符合日期時間字符串格式的字符串。

Date.UTC (year, month [, date [, hours [, minutes [, seconds [, ms ] ] ] ] ])

 當(dāng)用少于兩個的參數(shù)調(diào)用 UTC 函數(shù)時,它的行為是依賴于實現(xiàn)的。當(dāng)用二到七個參數(shù)調(diào)用 UTC 函數(shù),它從 year, month 和 ( 可選的 ) date, hours, minutes, seconds, ms 計算出日期時間。采用以下步驟:

  1. 令 y 為 ToNumber(year).
  2. 令 m 為 ToNumber(month).
  3. 如果提供了 date ,則令 dt 為 ToNumber(date); 否則令 dt 為 1.
  4. 如果提供了 hours ,則令 h 為 ToNumber(hours); 否則令 h 為 0.
  5. 如果提供了 minutes ,則令 min 為 ToNumber(minutes); 否則令 min 為 0.
  6. 如果提供了 seconds ,則令 s 為 ToNumber(seconds); 否則令 s 為 0.
  7. 如果提供了 ms ,則令 milli 為 ToNumber(ms); 否則令 milli 為 0.
  8. 如果 y 不是 NaN 且 0 ≤ ToInteger(y) ≤ 99, 則令 yr 為 1900+ToInteger(y); 否則令 yr 為 y.
  9. 返回 TimeClip(MakeDate(MakeDay(yr, m, dt), MakeTime(h, min, s, milli))).

 UTC 函數(shù)的 length 屬性是 7。

 UTC 函數(shù)與 Date 構(gòu)造器的不同點有:它返回一個時間值,而不是創(chuàng)建 Date 對象,還有它將參數(shù)解釋為 UTC,而不是本地時間。

Date.now ( )

 now 函數(shù)返回一個數(shù)字值,它表示調(diào)用 now 時的 UTC 日期時間的時間值。

Date 原型對象的屬性

 Date 原型對象自身是一個 Date 對象(其 [[Class]] 是 "Date"),其 [[PrimitiveValue]] 是 NaN。

 Date 原型對象的 [[Prototype]] 內(nèi)部屬性的值是標準內(nèi)置 Object 原型對象 (15.2.4)。

 在以下對 Date 原型對象的函數(shù)屬性的描述中,短語“this Date 對象”指調(diào)用函數(shù)時的 this 值對象。除非另外說明,這些函數(shù)不是通用的;如果 this 值不是 [[Class]] 內(nèi)部屬性為 "Date" 的對象,則拋出一個 TypeError 異常。短語“this 時間值”指代表 this Date 對象的時間值的數(shù)字值,它是 this Date 對象的 [[PrimitiveValue]] 內(nèi)部屬性的值。

Date.prototype.constructor

 Date.prototype.constructor 的初始值是內(nèi)置 Date 構(gòu)造器。

Date.prototype.toString ( )

 此函數(shù)返回一個字符串值。字符串中內(nèi)容是依賴于實現(xiàn)的,但目的是用一種方便,人類可讀的形式表示當(dāng)前時區(qū)的時間。

 對毫秒數(shù)為零的任意 Date 值 d,Date.parse(d.toString()) 和 d.valueOf() 的結(jié)果相同。見 15.9.4.2

Date.prototype.toDateString ( )

 此函數(shù)返回一個字符串值。字符串中內(nèi)容是依賴于實現(xiàn)的,但目的是用一種方便,人類可讀的形式表示當(dāng)前時區(qū)時間的“日期”部分。

Date.prototype.toTimeString ( )

 此函數(shù)返回一個字符串值。字符串中內(nèi)容是依賴于實現(xiàn)的,但目的是用一種方便,人類可讀的形式表示當(dāng)前時區(qū)時間的“時間”部分。

Date.prototype.toLocaleString ( )

 此函數(shù)返回一個字符串值。字符串中內(nèi)容是依賴于實現(xiàn)的,但目的是用一種 -- 對應(yīng)宿主環(huán)境的當(dāng)前語言環(huán)境設(shè)定的 -- 方便,人類可讀的形式表示當(dāng)前時區(qū)的時間。

 這個函數(shù)的第一個參數(shù)可能會在此標準的未來版本中使用到;因此建議實現(xiàn)不要以任何目的使用這個位置參數(shù)。

Date.prototype.toLocaleDateString ( )

 此函數(shù)返回一個字符串值。字符串中內(nèi)容是依賴于實現(xiàn)的,但目的是用一種 -- 對應(yīng)宿主環(huán)境的當(dāng)前語言環(huán)境設(shè)定的 -- 方便,人類可讀的形式表示當(dāng)前時區(qū)時間的“日期”部分。

 這個函數(shù)的第一個參數(shù)可能會在此標準的未來版本中使用到;因此建議實現(xiàn)不要以任何目的使用這個位置參數(shù)。

Date.prototype.toLocaleTimeString ( )

 此函數(shù)返回一個字符串值。字符串中內(nèi)容是依賴于實現(xiàn)的,但目的是用一種 -- 對應(yīng)宿主環(huán)境的當(dāng)前語言環(huán)境設(shè)定的 -- 方便,人類可讀的形式表示當(dāng)前時區(qū)時間的“時間”部分。

 這個函數(shù)的第一個參數(shù)可能會在此標準的未來版本中使用到;因此建議實現(xiàn)不要以任何目的使用這個位置參數(shù)。

Date.prototype.valueOf ( )

 valueOf 函數(shù)返回一個數(shù)字值,它是 this 時間值。

Date.prototype.getTime ( )

  1. 返回 this 時間值。

Date.prototype.getFullYear ( )

  1. 令 t 為 this 時間值 .
  2. 如果 t 是 NaN, 返回 NaN.
  3. 返回 YearFromTime(LocalTime(t)).

Date.prototype.getUTCFullYear ( )

  1. 令 t 為 this 時間值 .
  2. 如果 t 是 NaN, 返回 NaN.
  3. 返回 YearFromTime(t).

Date.prototype.getMonth ( )

  1. 令 t 為 this 時間值 .
  2. 如果 t 是 NaN, 返回 NaN.
  3. 返回 MonthFromTime(LocalTime(t)).

Date.prototype.getUTCMonth ( )

  1. 令 t 為 this 時間值 .
  2. 如果 t 是 NaN, 返回 NaN.
  3. 返回 MonthFromTime(t).

Date.prototype.getDate ( )

  1. 令 t 為 this 時間值 .
  2. 如果 t 是 NaN, 返回 NaN.
  3. 返回 DateFromTime(LocalTime(t)).

Date.prototype.getUTCDate ( )

  1. 令 t 為 this 時間值 .
  2. 如果 t 是 NaN, 返回 NaN.
  3. 返回 DateFromTime(t).

Date.prototype.getDay ( )

  1. 令 t 為 this 時間值 .
  2. 如果 t 是 NaN, 返回 NaN.
  3. 返回 WeekDay(LocalTime(t)).

Date.prototype.getUTCDay ( )

  1. 令 t 為 this 時間值 .
  2. 如果 t 是 NaN, 返回 NaN.
  3. 返回 WeekDay(t).

Date.prototype.getHours ( )

  1. 令 t 為 this 時間值 .
  2. 如果 t 是 NaN, 返回 NaN.
  3. 返回 HourFromTime(LocalTime(t)).

Date.prototype.getUTCHours ( )

  1. 令 t 為 this 時間值 .
  2. 如果 t 是 NaN, 返回 NaN.
  3. 返回 HourFromTime(t).

Date.prototype.getMinutes ( )

  1. 令 t 為 this 時間值 .
  2. 如果 t 是 NaN, 返回 NaN.
  3. 返回 MinFromTime(LocalTime(t)).

Date.prototype.getUTCMinutes ( )

  1. 令 t 為 this 時間值 .
  2. 如果 t 是 NaN, 返回 NaN.
  3. 返回 MinFromTime(t).

Date.prototype.getSeconds ( )

  1. 令 t 為 this 時間值 .
  2. 如果 t 是 NaN, 返回 NaN.
  3. 返回 SecFromTime(LocalTime(t)).

Date.prototype.getUTCSeconds ( )

  1. 令 t 為 this 時間值 .
  2. 如果 t 是 NaN, 返回 NaN.
  3. 返回 SecFromTime(t).

Date.prototype.getMilliseconds ( )

  1. 令 t 為 this 時間值 .
  2. 如果 t 是 NaN, 返回 NaN.
  3. 返回 msFromTime(LocalTime(t)).

Date.prototype.getUTCMilliseconds ( )

  1. 令 t 為 this 時間值 .
  2. 如果 t 是 NaN, 返回 NaN.
  3. 返回 msFromTime(t).

Date.prototype.getTimezoneOffset ( )

 返回本地時間和 UTC 時間之間相差的分鐘數(shù)。

  1. 令 t 為 this 時間值 .
  2. 如果 t 是 NaN, 返回 NaN.
  3. 返回 (t ? LocalTime(t)) / msPerMinute.

Date.prototype.setTime (time)

  1. 令 v 為 TimeClip(ToNumber(time)).
  2. 設(shè)定 this Date 對象的 [[PrimitiveValue]] 內(nèi)部屬性為 v.
  3. 返回 v.

Date.prototype.setMilliseconds (ms)

  1. 令 t 為 LocalTime(this 時間值 ) 的結(jié)果 .
  2. 令 time 為 MakeTime(HourFromTime(t), MinFromTime(t), SecFromTime(t), ToNumber(ms)).
  3. 令 u 為 TimeClip(UTC(MakeDate(Day(t), time))).
  4. 設(shè)定 this Date 對象的 [[PrimitiveValue]] 內(nèi)部屬性為 u.
  5. 返回 u.

Date.prototype.setUTCMilliseconds (ms)

  1. 令 t 為 this 時間值 .
  2. 令 time 為 MakeTime(HourFromTime(t), MinFromTime(t), SecFromTime(t), ToNumber(ms)).
  3. 令 v 為 TimeClip(MakeDate(Day(t), time)).
  4. 設(shè)定 this Date 對象的 [[PrimitiveValue]] 內(nèi)部屬性為 v.
  5. 返回 v.

Date.prototype.setSeconds (sec [, ms ] )

 沒指定 ms 參數(shù)時的行為是,仿佛 ms 被指定為調(diào)用 getMilliseconds() 的結(jié)果一樣。

  1. 令 t 為 LocalTime(this 時間值 ) 的結(jié)果 .
  2. 令 s 為 ToNumber(sec).
  3. 如果沒指定 ms , 則令 milli 為 msFromTime(t); 否則,令 milli 為 ToNumber(ms).
  4. 令 date 為 MakeDate(Day(t), MakeTime(HourFromTime(t), MinFromTime(t), s, milli)).
  5. 令 u 為 TimeClip(UTC(date)).
  6. 設(shè)定 this Date 對象的 [[PrimitiveValue]] 內(nèi)部屬性為 u.
  7. 返回 u.

 setSeconds 方法的 length 屬性是 2。

Date.prototype.setUTCSeconds (sec [, ms ] )

 沒指定 ms 參數(shù)時的行為是,仿佛 ms 被指定為調(diào)用 getUTCMilliseconds() 的結(jié)果一樣。

  1. 令 t 為 this 時間值 .
  2. 令 s 為 ToNumber(sec).
  3. 如果沒指定 ms , 則令 milli 為 msFromTime(t); 否則,令 milli 為 ToNumber(ms).
  4. 令 date 為 MakeDate(Day(t), MakeTime(HourFromTime(t), MinFromTime(t), s, milli)).
  5. 令 v 為 TimeClip(date).
  6. 設(shè)定 this Date 對象的 [[PrimitiveValue]] 內(nèi)部屬性為 v.
  7. 返回 v.

 setUTCSeconds 方法的 length 屬性是 2。

Date.prototype.setMinutes (min [, sec [, ms ] ] )

 沒指定 sec 參數(shù)時的行為是,仿佛 ms 被指定為調(diào)用 getSeconds() 的結(jié)果一樣。

 沒指定 ms 參數(shù)時的行為是,仿佛 ms 被指定為調(diào)用 getMilliseconds() 的結(jié)果一樣。

  1. 令 t 為 LocalTime(this 時間值 ) 的結(jié)果 .
  2. 令 m 為 ToNumber(min).
  3. 如果沒指定 sec , 則令 s 為 SecFromTime(t); 否則 , 令 s 為 ToNumber(sec).
  4. 如果沒指定 ms , 則令 milli 為 msFromTime(t); 否則 , 令 milli 為 ToNumber(ms).
  5. 令 date 為 MakeDate(Day(t), MakeTime(HourFromTime(t), m, s, milli)).
  6. 令 u 為 TimeClip(UTC(date)).
  7. 設(shè)定 this Date 對象的 [[PrimitiveValue]] 內(nèi)部屬性為 u.
  8. 返回 u.

 setMinutes 方法的 length 屬性是 3。

Date.prototype.setUTCMinutes (min [, sec [, ms ] ] )

 沒指定 sec 參數(shù)時的行為是,仿佛 ms 被指定為調(diào)用 getUTCSeconds() 的結(jié)果一樣。

 沒指定 ms 參數(shù)時的行為是,仿佛 ms 被指定為調(diào)用 getUTCMilliseconds() 的結(jié)果一樣。

  1. 令 t 為 this 時間值 .
  2. 令 m 為 ToNumber(min).
  3. 如果沒指定 sec , 則令 s 為 SecFromTime(t); 否則 , 令 s 為 ToNumber(sec).
  4. 如果沒指定 ms , 則令 milli 為 msFromTime(t); 否則 , 令 milli 為 ToNumber(ms).
  5. 令 date 為 MakeDate(Day(t), MakeTime(HourFromTime(t), m, s, milli)).
  6. 令 v 為 TimeClip(date).
  7. 設(shè)定 this Date 對象的 [[PrimitiveValue]] 內(nèi)部屬性為 v.
  8. 返回 v.

 setUTCMinutes 方法的 length 屬性是 3。

Date.prototype.setHours (hour [, min [, sec [, ms ] ] ] )

 沒指定 min 參數(shù)時的行為是,仿佛 min 被指定為調(diào)用 getMinutes() 的結(jié)果一樣。

 沒指定 sec 參數(shù)時的行為是,仿佛 ms 被指定為調(diào)用 getSeconds() 的結(jié)果一樣。

 沒指定 ms 參數(shù)時的行為是,仿佛 ms 被指定為調(diào)用 getMilliseconds() 的結(jié)果一樣。

  1. 令 t 為 LocalTime(this 時間值 ) 的結(jié)果 .
  2. 令 h 為 ToNumber(hour).
  3. 如果沒指定 min , 則令 m 為 MinFromTime(t); 否則 , 令 m 為 ToNumber(min).
  4. 如果沒指定 sec , 則令 s 為 SecFromTime(t); 否則 , 令 s 為 ToNumber(sec).
  5. 如果沒指定 ms , 則令 milli 為 msFromTime(t); 否則 , 令 milli 為 ToNumber(ms).
  6. 令 date 為 MakeDate(Day(t), MakeTime(h, m, s, milli)).
  7. 令 u 為 TimeClip(UTC(date)).
  8. 設(shè)定 this Date 對象的 [[PrimitiveValue]] 內(nèi)部屬性為 u.
  9. 返回 u.

 setHours 方法的 length 屬性是 4。

Date.prototype.setUTCHours (hour [, min [, sec [, ms ] ] ] )

 沒指定 min 參數(shù)時的行為是,仿佛 min 被指定為調(diào)用 getUTCMinutes() 的結(jié)果一樣。

 沒指定 sec 參數(shù)時的行為是,仿佛 ms 被指定為調(diào)用 getUTCSeconds() 的結(jié)果一樣。

 沒指定 ms 參數(shù)時的行為是,仿佛 ms 被指定為調(diào)用 getUTCMilliseconds() 的結(jié)果一樣。

  1. 令 t 為 this 時間值 .
  2. 令 h 為 ToNumber(hour).
  3. 如果沒指定 min , 則令 m 為 MinFromTime(t); 否則 , 令 m 為 ToNumber(min).
  4. 如果沒指定 sec , 則令 s 為 SecFromTime(t); 否則 , 令 s 為 ToNumber(sec).
  5. 如果沒指定 ms , 則令 milli 為 msFromTime(t); 否則 , 令 milli 為 ToNumber(ms).
  6. 令 date 為 MakeDate(Day(t), MakeTime(h, m, s, milli)).
  7. 令 v 為 TimeClip(date).
  8. 設(shè)定 this Date 對象的 [[PrimitiveValue]] 內(nèi)部屬性為 v.
  9. 返回 v.

 setUTCHours 方法的 length 屬性是 4。

Date.prototype.setDate (date)

  1. 令 t 為 LocalTime(this 時間值 ) 的結(jié)果 .
  2. 令 dt 為 ToNumber(date).
  3. 令 newDate 為 MakeDate(MakeDay(YearFromTime(t), MonthFromTime(t), dt), TimeWithinDay(t)).
  4. 令 u 為 TimeClip(UTC(newDate)).
  5. 設(shè)定 this Date 對象的 [[PrimitiveValue]] 內(nèi)部屬性為 u.
  6. 返回 u.

Date.prototype.setUTCDate (date)

  1. 令 t 為 this 時間值 .
  2. 令 dt 為 ToNumber(date).
  3. 令 newDate 為 MakeDate(MakeDay(YearFromTime(t), MonthFromTime(t), dt), TimeWithinDay(t)).
  4. 令 v 為 TimeClip(newDate).
  5. 設(shè)定 this Date 對象的 [[PrimitiveValue]] 內(nèi)部屬性為 v.
  6. 返回 v.

Date.prototype.setMonth (month [, date ] )

 沒指定 date 參數(shù)時的行為是,仿佛 ms 被指定為調(diào)用 getDate() 的結(jié)果一樣。

  1. 令 t 為 LocalTime(this 時間值 ) 的結(jié)果 .
  2. 令 m 為 ToNumber(month).
  3. 如果沒指定 date , 則令 dt 為 DateFromTime(t); 否則 , 令 dt 為 ToNumber(date).
  4. 令 newDate 為 MakeDate(MakeDay(YearFromTime(t), m, dt), TimeWithinDay(t)).
  5. 令 u 為 TimeClip(UTC(newDate)).
  6. 設(shè)定 this Date 對象的 [[PrimitiveValue]] 內(nèi)部屬性為 u.
  7. 返回 u.

 setMonth 方法的 length 屬性是 2。

Date.prototype.setUTCMonth (month [, date ] )

 沒指定 date 參數(shù)時的行為是,仿佛 ms 被指定為調(diào)用 getUTCDate() 的結(jié)果一樣。

  1. 令 t 為 this 時間值 .
  2. 令 m 為 ToNumber(month).
  3. 如果沒指定 date , 則令 dt 為 DateFromTime(t); 否則 , 令 dt 為 ToNumber(date).
  4. 令 newDate 為 MakeDate(MakeDay(YearFromTime(t), m, dt), TimeWithinDay(t)).
  5. 令 v 為 TimeClip(newDate).
  6. 設(shè)定 this Date 對象的 [[PrimitiveValue]] 內(nèi)部屬性為 v.
  7. 返回 v.

 setUTCMonth 方法的 length 屬性是 2。

Date.prototype.setFullYear (year [, month [, date ] ] )

 沒指定 month 參數(shù)時的行為是,仿佛 ms 被指定為調(diào)用 getMonth() 的結(jié)果一樣。

 沒指定 date 參數(shù)時的行為是,仿佛 ms 被指定為調(diào)用 getDate() 的結(jié)果一樣。

  1. 令 t 為 LocalTime(this 時間值 ) 的結(jié)果 ; 但如果 this 時間值是 NaN, 則令 t 為 +0.
  2. 令 y 為 ToNumber(year).
  3. 如果沒指定 month , 則令 m 為 MonthFromTime(t); 否則 , 令 m 為 ToNumber(month).
  4. 如果沒指定 date , 則令 dt 為 DateFromTime(t); 否則 , 令 dt 為 ToNumber(date).
  5. 令 newDate 為 MakeDate(MakeDay(y, m, dt), TimeWithinDay(t)).
  6. 令 u 為 TimeClip(UTC(newDate)).
  7. 設(shè)定 this Date 對象的 [[PrimitiveValue]] 內(nèi)部屬性為 u.
  8. 返回 u.

 setFullYear 方法的 length 屬性是 3。

Date.prototype.setUTCFullYear (year [, month [, date ] ] )

 沒指定 month 參數(shù)時的行為是,仿佛 ms 被指定為調(diào)用 getUTCMonth() 的結(jié)果一樣。

 沒指定 date 參數(shù)時的行為是,仿佛 ms 被指定為調(diào)用 getUTCDate() 的結(jié)果一樣。

  1. 令 t 為 this 時間值 ; 但如果 this 時間值是 NaN, 則令 t 為 +0.
  2. 令 y 為 ToNumber(year).
  3. 如果沒指定 month , 則令 m 為 MonthFromTime(t); 否則 , 令 m 為 ToNumber(month).
  4. 如果沒指定 date , 則令 dt 為 DateFromTime(t); 否則 , 令 dt 為 ToNumber(date).
  5. 令 newDate 為 MakeDate(MakeDay(y, m, dt), TimeWithinDay(t)).
  6. 令 v 為 TimeClip(newDate).
  7. 設(shè)定 this Date 對象的 [[PrimitiveValue]] 內(nèi)部屬性為 v.
  8. 返回 v.

 setUTCFullYear 方法的 length 屬性是 3。

Date.prototype.toUTCString ( )

 此函數(shù)返回一個字符串值。字符串中內(nèi)容是依賴于實現(xiàn)的,但目的是用一種方便,人類可讀的形式表示 UTC 時間。

 此函數(shù)的目的是為日期時間產(chǎn)生一個比 15.9.1.15 指定的格式更易讀的字符串表示。沒必要選擇明確的或易于機器解析的格式。如果一個實現(xiàn)沒有一個首選的人類可讀格式,建議使用 15.9.1.15 定義的格式,但用空格而不是“T”分割日期和時間元素。

Date.prototype.toISOString ( )

 此函數(shù)返回一個代表 --this Date 對象表示的時間的實例 -- 的字符串。字符串的格式是 15.9.1.15 定義的日期時間字符串格式。字符串中包含所有的字段。字符串表示的時區(qū)總是 UTC,用后綴 Z 標記。如果 this 對象的時間值不是有限的數(shù)字值,拋出一個 RangeError 異常。

Date.prototype.toJSON ( key )

 此函數(shù)為 JSON.stringify (15.12.3) 提供 Date 對象的一個字符串表示。

 當(dāng)用參數(shù) key 調(diào)用 toJSON 方法,采用以下步驟:

  1. 令 O 為 以 this 值為參數(shù)調(diào)用 toObject 的結(jié)果。
  2. 令 tv 為 ToPrimitive(O, hint Number).
  3. 如果 tv 是一個數(shù)字值且不是有限的 , 返回 null.
  4. 令 toISO 為以 "toISOString" 為參數(shù)調(diào)用 O 的 [[Get]] 內(nèi)部方法的結(jié)果。
  5. 如果 IsCallable(toISO) 是 false, 拋出一個 TypeError 異常 .
  6. O 作為以 this 值并用空參數(shù)列表調(diào)用 toISO 的 [[Call]] 內(nèi)部方法,返回結(jié)果。

 參數(shù)是被忽略的。

 toJSON 函數(shù)是故意設(shè)計成通用的;它不需要其 this 值必須是一個 Date 對象。因此,它可以作為方法轉(zhuǎn)移到其他類型的對象上。但轉(zhuǎn)移到的對象必須有 toISOString 方法。對象可自由使用參數(shù) key 來過濾字符串化的方式。

Date 實例的屬性

 Date 實例從 Date 原型對象繼承屬性,Date 實例的 [[Class]] 內(nèi)部屬性值是 "Date"。Date 實例還有一個 [[PrimitiveValue]] 內(nèi)部屬性。

 [[PrimitiveValue]] 內(nèi)部屬性是代表 this Date 對象的時間值。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號