Date 物件

 

Date 物件

JavaScript 並沒有日期的資料類型。不過你可以在你的應用程式中使用 Date 物件及其方法來使用日期和時間。Date 物件有非常大量的方法可用來設定、取得、操作日期。不過沒有任何的屬性。

JavaScript 處理日期的方式很類似 Java。這兩個語言有很多同樣的日期方法,而且這兩個語言都是以 1970 年 1 月 1 日 00:00:00 開始的毫秒數來儲存日期。

Date 物件的範圍是以 1970 年 1 月 1 日 (UTC) 為基準,從 -100,000,000 日一直到 100,000,000 日。

如下建立 Date 物件︰

dateObjectName = new Date([parameters])

此處的 dateObjectName 就是將要建立的 Date 物件的名稱;他可以是新的物件或是既存物件的屬性。

前敘語法中的 parameters 可以是下列的任何一種形式︰

  • 沒有參數︰建立今天的日期和時間。例如,today = new Date()
  • 以此格式表示日期的字串︰"月 日, 年 時:分:秒"。例如,Xmas95 = new Date("December 25, 1995 13:30:00")。如果你省略了時、分、秒,這些值會被設為零。
  • 一組年、月、日的整數值。例如,Xmas95 = new Date(1995,11,25)
  • 一組年、月、日、時、分、秒的整數值。例如,Xmas95 = new Date(1995,11,25,9,30,0)

JavaScript 1.2 及早期版本
Date 物件的行為如下︰

  • 不允許使用 1970 年以前的日期。
  • JavaScript 依靠平台特有的日期之便及其行為;平台與平台之間,Date 物件的行為有所不同。

Date 物件的方法

用於處理日期和時間的 Date 物件的方法主要可分為這幾類︰

  • "set" 方法,用於設定 Date 物件的日期和時間的值。
  • "get" 方法,用於取得 Date 物件的日期和時間的值。
  • "to" 方法,用於從 Date 物件返回字串值。
  • parse 和 UTC 方法,用於分析 Date 字串。

使用 "get" 和 "set" 方法,你可以分別取得或設定秒、分、時、日、星期、月、年。還有 getDay 方法可返回星期,但沒有相對應的 setDay 方法,因為星期會自動設定。這些方法使用整數來表示如下的這些值︰

  • 秒和分︰0 至 59
  • 時︰0 至 23
  • 星期︰0(星期日)至 6(星期六)
  • 日︰1 至 31(月份裡的某一日)
  • 月︰0(一月)至 11(十二月)
  • 年︰從 1900 年起

舉例來說,假設你定義了如下日期︰

Xmas95 = new Date("December 25, 1995")

Xmas95.getMonth() 返回 11,而 Xmas95.getFullYear() 返回 1995。

getTimesetTime 方法對於日期的比較來說很有用。getTime 方法返回自 1970 年 1 月 1 日 00:00:00 以來的毫秒數。

例如,下面的代碼顯示今年的剩餘天數︰

today = new Date()
endYear = new Date(1995,11,31,23,59,59,999) // 設定日和月
endYear.setFullYear(today.getFullYear()) // 設定為今年
msPerDay = 24 * 60 * 60 * 1000 // 一天的毫秒數
daysLeft = (endYear.getTime() - today.getTime()) / msPerDay
daysLeft = Math.round(daysLeft) // 返回今年的剩餘天數

本範例建立了名為 today 的 Date 物件,其中內含有今天的日期。然後,使用一天的毫秒數,計算今天和 endYear 之間的天數,使用 getTime 並捨入為天數。

The parse 方法對於把值從日期字串代入到既存的 Date 物件來說很有用。例如,下面的代碼使用 parsesetTime 把日期的值代入到 IPOdate 物件︰

IPOdate = new Date()
IPOdate.setTime(Date.parse("Aug 9, 1995"))

Date 物件的使用︰範例

在下面的範例中,函數 JSClock() 返回以數位時鐘為格式的時間。

function JSClock() {
   var time = new Date()
   var hour = time.getHours()
   var minute = time.getMinutes()
   var second = time.getSeconds()
   var temp = "" + ((hour > 12) ? hour - 12 : hour)
   if (hour == 0)
      temp = "12";
   temp += ((minute < 10) ? ":0" : ":") + minute
   temp += ((second < 10) ? ":0" : ":") + second
   temp += (hour >= 12) ? " P.M." : " A.M."
   return temp
}

JSClock 函數首先建立稱為 time 的新 Date 物件;因為沒有提供參數,time 會以今天的日期和時間來建立。然後呼叫 getHoursgetMinutesgetSeconds 方法把時、分、秒的值代入到 hourminutesecond

以下的四個語句會以 time 為基準建立字串。第一個語句建立變數 temp,使用條件表達式把值代入;如果 hour 大於 12,就會是 (hour - 12),否則會是單純的 hour,除非 hour 為 0,這時就會是 12。

下一個語句把 minute 的值附加到 temp 裡。如果 minute 的值小於 10,條件表達式就會加上前置為零的字串;否則加上分隔用分號的字串。接下來的語句把秒的值以同樣方式附加到 temp。

最後,如果 hour 大於 12,條件表達式就把 "PM" 附加到 temp;否則就把 "AM" 附加到 temp

文件標籤與貢獻者

 此頁面的貢獻者: teoli, happysadman
 最近更新: teoli,