DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> JavaScript基礎知識 >> Javascript之Date對象詳解
Javascript之Date對象詳解
編輯:JavaScript基礎知識     

Date對象即日期時間對象,它的主要功能是實現對日期時間的處理

1、創建Date對象

復制代碼 代碼如下:var myDate = new Date();

復制代碼 代碼如下:var myDate = new Date("July 21, 1983 01:15:00");//此種方法為自定義日期時間的方式,格式若不對的話為提示Invalid Date
Date對象的constructor屬性為:Date
document.write(myDate.constructor == Date);//輸出true

2、Date()方法,返回今天的日期和時間,格式是固定格式:

復制代碼 代碼如下:document.write(Date());//Date()屬於Javascript的內置對象,可以直接使用
輸出:
Fri Oct 26 2012 10:15:22 GMT+0800
格式: 星期 月份 日期 年份 時間 時區

另:假如自定義一個Date()對象,返回結果是一樣的
復制代碼 代碼如下:var myDate = new Date();
document.write(myDate);
Fri Oct 26 2012 10:17:09 GMT+0800

注:兩者區別的地方在於:
前者只能顯示當前的時間,而不能隨意定義時間
例,document.write(Date("July 21, 1983 01:15:00"));
它顯示的時間仍然是當前的時間:Fri Oct 26 2012 10:15:22 GMT+0800

3、getDate()方法返回月份的某一天

月份中的某一天指的是使用本地時間,其返回值是 1 ~ 31 之間的一個整數。
復制代碼 代碼如下:var myDate = new Date();
document.write(myDate.getDate());
輸出:26

復制代碼 代碼如下:var myDate = new Date("July 21, 1983 01:15:00");
document.write(myDate.getDate());
輸出:21

4、getDay() 方法可返回表示星期的某一天的數字,它的取值范圍:0--6

復制代碼 代碼如下:var myDate = new Date("July 21, 1983 01:15:00");
document.write(mtDate.getDay());
輸出4

為此我們可以采用Date對象和Array對象結合的方式將時間人性化顯示出來,下面這種方法非常常用
復制代碼 代碼如下:var weekday = new Array(7);
weekday[0]="Sunday";
weekday[1]="Monday";
weekday[2]="Tuesday";
weekday[3]="Wednesday";
weekday[4]="Thursday";
weekday[5]="Friday";
weekday[6]="Saturday";
var myDate = new Date();
document.write(weekday[myDate.getDay()]);

5、getMonth(),返回月份字段,返回值是 0(一月) 到 11(十二月) 之間的一個整數

和getDay()類似,我們也采用與Array對象相結合的方式

復制代碼 代碼如下:var d=new Date();
var month=new Array(12);
month[0]="January";
month[1]="February";
month[2]="March";
month[3]="April";
month[4]="May";
month[5]="June";
month[6]="July";
month[7]="August";
month[8]="September";
month[9]="October";
month[10]="November";
month[11]="December";
document.write("The month is " + month[d.getMonth()]);

6、getFullYear() 方法可返回一個表示年份的 4 位數字。

返回值是一個四位數,表示包括世紀值在內的完整年份,而不是兩位數的縮寫形式。
復制代碼 代碼如下:var d = new Date();
document.write(d.getFullYear());
輸出:
2012

復制代碼 代碼如下:var born = new Date("July 21, 1983 01:15:00");
document.write("I was born in " + born.getFullYear());
輸出:
1983

通過上述方法三種方法結合我們就可以得出比較人性化的時間顯示,例:
復制代碼 代碼如下:var weekday = new Array(7);
weekday[0]="Sunday"
weekday[1]="Monday"
weekday[2]="Tuesday"
weekday[3]="Wednesday"
weekday[4]="Thursday"
weekday[5]="Friday"
weekday[6]="Saturday"
var month=new Array(12);
month[0]="January";
month[1]="February";
month[2]="March";
month[3]="April";
month[4]="May";
month[5]="June";
month[6]="July";
month[7]="August";
month[8]="September";
month[9]="October";
month[10]="November";
month[11]="December";
var myDate = new Date();
document.write("Date is "+myDate.getFullYear()+" "+month[myDate.getMonth()]+" "+myDate.getDate()+" "+weekday[myDate.getDay()]);
輸出為:
Date is 2012 October 19 Friday

7、getHours() 方法可返回時間的小時字段,返回值是 0 (午夜) 到 23 (晚上 11 點)之間的一個整數。

復制代碼 代碼如下:var born = new Date("July 21, 1983 01:15:00");
document.write(born.getHours());
輸出:1
注釋:由 getHours() 返回的值是一個兩位的數字。
不過返回值不總是兩位的,如果該值小於 10,則僅返回一位數字。

8、getMinutes() 方法可返回時間的分鐘字段,返回值是 0 ~ 59 之間的一個整數。

與上述方法類似,返回值不總是兩位的,如果該值小於 10,則僅返回一位數字。

9、getSeconds() 方法可返回時間的秒,返回值是 0 ~ 59 之間的一個整數。

與上述方法類似,返回值不總是兩位的,如果該值小於 10,則僅返回一位數字。

10、getMilliseconds() 方法可返回時間的毫秒,毫秒字段,以本地時間顯示。返回值是 0 ~ 999 之間的一個整數。

注釋:由 getMilliseconds() 返回的值是一個三位的數字。

不過返回值不總是三位的,如果該值小於 100,則僅返回兩位數字,如果該值小於 10,則僅返回一位數字。
下面我們有兩種方式將時間顯示出來:
--->方式一
復制代碼 代碼如下:var d = new Date();
document.write('Time is '+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds());
輸出:Time is 10:52:2,缺點很明顯,在秒為<10的情況下只顯示了一位,其他的也類似,因此推薦第二種顯示方式

--->方式二
復制代碼 代碼如下:function checktime(time)
{
    if(time<10)
    {
      time = '0'+time;
    }
    return time;
}
var d = new Date();
document.write('Time is '+checktime(d.getHours())+":"+checktime(d.getMinutes())+":"+checktime(d.getSeconds()));
輸出:Time is 10:55:02

11、getTime() 方法可返回本地時間距 1970 年 1 月 1 日之間的毫秒數,因此可以自定義Date("Jul 26 2000");

復制代碼 代碼如下:var d = new Date();
document.write(d.getTime() + " milliseconds since 1970/01/01");
輸出:1350615452813 milliseconds since 1970/01/01

因此我們可以根據此數得到本地時間距離1970/01/01的年數
復制代碼 代碼如下:var minutes = 1000*60;//一分鐘有60秒,一秒有60毫秒,下面依次類推
var hours = minutes*60;
var days = hours*24;
var years = days*365;
var d = new Date();
var t = d.getTime();//獲得距離1970/01/01的毫秒數
var y = t/years;
document.write("It's been: " + y + " years since 1970/01/01!");
輸出:
It's been: 42.82773990521943 years since 1970/01/01!
注:此時的年份是一個小數,可以將其換成整數(其實Javascript中沒有整數的區別)

最後一行修改為:
復制代碼 代碼如下:document.write("It's been: " + parseInt(y) + " years since 1970/01/01!");
輸出:
It's been: 42 years since 1970/01/01!
parseInt(float);可以將浮點類型轉換為整型

12、getTimezoneOffset() 方法可返回格林威治時間和本地時間之間的時差,以分鐘為單位。

注:
getTimezoneOffset() 方法返回的是本地時間與 GMT 時間或 UTC 時間之間相差的分鐘數。
實際上,該函數告訴我們運行 JavaScript 代碼的時區,以及指定的時間是否是夏令時。
返回之所以以分鐘計,而不是以小時計,原因是某些國家所占有的時區甚至不到一個小時的間隔。
復制代碼 代碼如下:var d = new Date();
document.write(d.getTimezoneOffset());
輸出:
-480(東八區,8*60)

因此可以根據此方法來判斷所在時區
復制代碼 代碼如下:function checkzone(zone)
{
    if (zone==0)
    {
        return "零時區";
    }
    else if (zone>0)
    {
    return "西"+parseInt(zone/60)+"區";
    }
    else
    {
    return "東"+parseInt(Math.abs(zone/60))+"區";
    }
}
var d = new Date();
document.write(checkzone(d.getTimezoneOffset()));
其中Math.abs()為求絕對值
以上方法是自己原創,因為地理學的不好,不知道對不對,求指正

13、parse() 方法可解析一個日期時間字符串,並返回 1970/1/1 午夜距離該日期時間的毫秒數。

parse(str);str為字符串,是一個符合時間格式的字符串
復制代碼 代碼如下:var minutes = 1000 * 60;
var hours = minutes * 60;
var days = hours * 24;
var years = days * 365;
var t = Date.parse("Jul 8, 2005");
var y = t/years;
document.write("It's been: " + parseInt(y) + " years from 1970/01/01");
document.write(" to 2005/07/08!");
輸出為:
It's been: 35 years from 1970/01/01 to 2005/07/08!

14、setDate() 方法用於設置一個月的某一天。

setDate(day),day必需。表示一個月中的一天的一個數值(1 ~ 31)。
注,此方法是在原先對象的基礎上進行修改,會改變原先數據的值
例:
復制代碼 代碼如下:var d = new Date();
document.write(d.getDate()+"<br>");
d.setDate(31);
document.write(d.getDate());
輸出:
19
31

15、setMonth() 方法用於設置月份,與setDate()使用方法一直,也會改變原Date對象

setMonth(month,day),目前可能不支持第二個參數,month必需。一個表示月份的數值,該值介於 0(一月) ~ 11(十二月) 之間。
假如支持day參數的話,day代表的是月中某一天的數值,介於 1 ~ 31 之間。用本地時間表示。
復制代碼 代碼如下:var d = new Date();
document.write(d.getMonth()+" "+d.getDate()+"<br>");
d.setMonth(11,26);
document.write(d.getMonth()+" "+d.getDate());
輸出為:
9 19
11 26

16、setFullYear() 方法用於設置年份。

setFullYear(year,month,day);
year 必需。表示年份的四位整數。用本地時間表示。
month 可選。表示月份的數值,介於 0 ~ 11 之間。用本地時間表示。
day 可選。表示月中某一天的數值,介於 1 ~ 31 之間。用本地時間表示。
復制代碼 代碼如下:var d = new Date();
d.setFullYear(1992,10,3);
document.write(d);
輸出為:
Tue Nov 03 1992 11:31:58 GMT+0800

17、setHours() 方法用於設置指定的時間的小時字段。

setHours(hour,min,sec,millisec);
hour 必需。表示小時的數值,介於 0(午夜) ~ 23(晚上11點) 之間,以本地時間計(下同)。
min 可選。表示分鐘的數值,介於 0 ~ 59 之間。在 EMCAScript 標准化之前,不支持該參數。
sec 可選。表示秒的數值,介於 0 ~ 59 之間。在 EMCAScript 標准化之前,不支持該參數。
millisec 可選。表示毫秒的數值,介於 0 ~ 999之間。在 EMCAScript 標准化之前,不支持該參數。
復制代碼 代碼如下:var d = new Date()
d.setHours(15,35,1)
document.write(d)
輸出為:
Fri Oct 19 15:35:01 UTC+0800 2012

18、setMinutes() 方法用於設置指定時間的分鐘字段。

setMinutes(min,sec,millisec)
min 必需。表示分鐘的數值,介於 0 ~ 59 之間,以本地時間計(下同)。
sec 可選。表示秒的數值,介於 0 ~ 59 之間。在 EMCAScript 標准化之前,不支持該參數。
millisec 可選。表示毫秒的數值,介於 0 ~ 999 之間。在 EMCAScript 標准化之前,不支持該參數。
復制代碼 代碼如下:var d = new Date()
d.setMinutes(1)
document.write(d)
輸出為:
Fri Oct 19 11:01:11 UTC+0800 2012

19、setSeconds() 方法用於設置指定時間的秒字段。

setSeconds(sec,millisec)
sec 必需。表示秒的數值,該值是介於 0 ~ 59 之間的整數。
millisec 可選。表示毫秒的數值,介於 0 ~ 999 之間。在 EMCAScript 標准化之前,不支持該參數。

20、setMilliseconds() 方法用於設置指定時間的毫秒字段。

setMilliseconds(millisec)
millisec 必需。用於設置 dateObject 毫秒字段,該參數是介於 0 ~ 999 之間的整數。

21、setTime() 方法以毫秒設置 Date 對象。

此方法是比較常用的方法,在數據庫中存放Date.getTime()毫秒數,
在返回時如何顯示出來呢,就是用此方法
setTime(millisec)
millisec 必需。要設置的日期和時間據 GMT 時間 1997 年 1 月 1 日午夜之間的毫秒數。
這種類型的毫秒值可以傳遞給 Date() 構造函數,可以通過調用 Date.UTC() 和 Date.parse() 方法獲得該值。以毫秒形式表示日期可以使它獨立於時區。
復制代碼 代碼如下:var d = new Date();
d.setTime(77771564221);
document.write(d);
輸出為:
Mon Jun 19 1972 11:12:44 GMT+0800
此種方法就可以根據數據庫中存放的long數據類型將其轉換為了時間對象

22、toTimeString() 方法可把 Date 對象的時間部分轉換為字符串,並返回結果。

復制代碼 代碼如下:var d = new Date();
document.write(d.toTimeString());
輸出:
11:50:57 GMT+0800

23、toDateString() 方法可把 Date 對象的日期部分轉換為字符串,並返回結果。

復制代碼 代碼如下:var d = new Date();
document.write(d.toDateString());
輸出:
Fri Oct 19 2012

24、還有很多設計UTC時區的一些方法,此處沒有列出,僅僅是對一般的通用較多的方法匯總了下

查看更多JavaScript的語法,大家可以關注:《JavaScript 參考教程》、《JavaScript代碼風格指南》,也希望大家多多支持。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved