Javascript之Date對(duì)象詳解
Date對(duì)象即日期時(shí)間對(duì)象,它的主要功能是實(shí)現(xiàn)對(duì)日期時(shí)間的處理
1、創(chuàng)建Date對(duì)象
或
Date對(duì)象的constructor屬性為:Date
document.write(myDate.constructor == Date);//輸出true
2、Date()方法,返回今天的日期和時(shí)間,格式是固定格式:
輸出:
Fri Oct 26 2012 10:15:22 GMT+0800
格式: 星期 月份 日期 年份 時(shí)間 時(shí)區(qū)
另:假如自定義一個(gè)Date()對(duì)象,返回結(jié)果是一樣的
document.write(myDate);
Fri Oct 26 2012 10:17:09 GMT+0800
注:兩者區(qū)別的地方在于:
前者只能顯示當(dāng)前的時(shí)間,而不能隨意定義時(shí)間
例,document.write(Date("July 21, 1983 01:15:00"));
它顯示的時(shí)間仍然是當(dāng)前的時(shí)間:Fri Oct 26 2012 10:15:22 GMT+0800
3、getDate()方法返回月份的某一天
月份中的某一天指的是使用本地時(shí)間,其返回值是 1 ~ 31 之間的一個(gè)整數(shù)。
document.write(myDate.getDate());
輸出:26
document.write(myDate.getDate());
輸出:21
4、getDay() 方法可返回表示星期的某一天的數(shù)字,它的取值范圍:0--6
document.write(mtDate.getDay());
輸出4
為此我們可以采用Date對(duì)象和Array對(duì)象結(jié)合的方式將時(shí)間人性化顯示出來(lái),下面這種方法非常常用
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(十二月) 之間的一個(gè)整數(shù)
和getDay()類(lèi)似,我們也采用與Array對(duì)象相結(jié)合的方式
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() 方法可返回一個(gè)表示年份的 4 位數(shù)字。
返回值是一個(gè)四位數(shù),表示包括世紀(jì)值在內(nèi)的完整年份,而不是兩位數(shù)的縮寫(xiě)形式。
document.write(d.getFullYear());
輸出:
2012
document.write("I was born in " + born.getFullYear());
輸出:
1983
通過(guò)上述方法三種方法結(jié)合我們就可以得出比較人性化的時(shí)間顯示,例:
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() 方法可返回時(shí)間的小時(shí)字段,返回值是 0 (午夜) 到 23 (晚上 11 點(diǎn))之間的一個(gè)整數(shù)。
document.write(born.getHours());
輸出:1
注釋?zhuān)河?getHours() 返回的值是一個(gè)兩位的數(shù)字。
不過(guò)返回值不總是兩位的,如果該值小于 10,則僅返回一位數(shù)字。
8、getMinutes() 方法可返回時(shí)間的分鐘字段,返回值是 0 ~ 59 之間的一個(gè)整數(shù)。
與上述方法類(lèi)似,返回值不總是兩位的,如果該值小于 10,則僅返回一位數(shù)字。
9、getSeconds() 方法可返回時(shí)間的秒,返回值是 0 ~ 59 之間的一個(gè)整數(shù)。
與上述方法類(lèi)似,返回值不總是兩位的,如果該值小于 10,則僅返回一位數(shù)字。
10、getMilliseconds() 方法可返回時(shí)間的毫秒,毫秒字段,以本地時(shí)間顯示。返回值是 0 ~ 999 之間的一個(gè)整數(shù)。
注釋?zhuān)河?getMilliseconds() 返回的值是一個(gè)三位的數(shù)字。
不過(guò)返回值不總是三位的,如果該值小于 100,則僅返回兩位數(shù)字,如果該值小于 10,則僅返回一位數(shù)字。
下面我們有兩種方式將時(shí)間顯示出來(lái):
--->方式一
document.write('Time is '+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds());
輸出:Time is 10:52:2,缺點(diǎn)很明顯,在秒為<10的情況下只顯示了一位,其他的也類(lèi)似,因此推薦第二種顯示方式
--->方式二
{
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() 方法可返回本地時(shí)間距 1970 年 1 月 1 日之間的毫秒數(shù),因此可以自定義Date("Jul 26 2000");
document.write(d.getTime() + " milliseconds since 1970/01/01");
輸出:1350615452813 milliseconds since 1970/01/01
因此我們可以根據(jù)此數(shù)得到本地時(shí)間距離1970/01/01的年數(shù)
var hours = minutes*60;
var days = hours*24;
var years = days*365;
var d = new Date();
var t = d.getTime();//獲得距離1970/01/01的毫秒數(shù)
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!
注:此時(shí)的年份是一個(gè)小數(shù),可以將其換成整數(shù)(其實(shí)Javascript中沒(méi)有整數(shù)的區(qū)別)
最后一行修改為:
輸出:
It's been: 42 years since 1970/01/01!
parseInt(float);可以將浮點(diǎn)類(lèi)型轉(zhuǎn)換為整型
12、getTimezoneOffset() 方法可返回格林威治時(shí)間和本地時(shí)間之間的時(shí)差,以分鐘為單位。
注:
getTimezoneOffset() 方法返回的是本地時(shí)間與 GMT 時(shí)間或 UTC 時(shí)間之間相差的分鐘數(shù)。
實(shí)際上,該函數(shù)告訴我們運(yùn)行 JavaScript 代碼的時(shí)區(qū),以及指定的時(shí)間是否是夏令時(shí)。
返回之所以以分鐘計(jì),而不是以小時(shí)計(jì),原因是某些國(guó)家所占有的時(shí)區(qū)甚至不到一個(gè)小時(shí)的間隔。
document.write(d.getTimezoneOffset());
輸出:
-480(東八區(qū),8*60)
因此可以根據(jù)此方法來(lái)判斷所在時(shí)區(qū)
{
if (zone==0)
{
return "零時(shí)區(qū)";
}
else if (zone>0)
{
return "西"+parseInt(zone/60)+"區(qū)";
}
else
{
return "東"+parseInt(Math.abs(zone/60))+"區(qū)";
}
}
var d = new Date();
document.write(checkzone(d.getTimezoneOffset()));
其中Math.abs()為求絕對(duì)值
以上方法是自己原創(chuàng),因?yàn)榈乩韺W(xué)的不好,不知道對(duì)不對(duì),求指正
13、parse() 方法可解析一個(gè)日期時(shí)間字符串,并返回 1970/1/1 午夜距離該日期時(shí)間的毫秒數(shù)。
parse(str);str為字符串,是一個(gè)符合時(shí)間格式的字符串
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() 方法用于設(shè)置一個(gè)月的某一天。
setDate(day),day必需。表示一個(gè)月中的一天的一個(gè)數(shù)值(1 ~ 31)。
注,此方法是在原先對(duì)象的基礎(chǔ)上進(jìn)行修改,會(huì)改變?cè)葦?shù)據(jù)的值
例:
document.write(d.getDate()+"<br>");
d.setDate(31);
document.write(d.getDate());
輸出:
19
31
15、setMonth() 方法用于設(shè)置月份,與setDate()使用方法一直,也會(huì)改變?cè)璂ate對(duì)象
setMonth(month,day),目前可能不支持第二個(gè)參數(shù),month必需。一個(gè)表示月份的數(shù)值,該值介于 0(一月) ~ 11(十二月) 之間。
假如支持day參數(shù)的話(huà),day代表的是月中某一天的數(shù)值,介于 1 ~ 31 之間。用本地時(shí)間表示。
document.write(d.getMonth()+" "+d.getDate()+"<br>");
d.setMonth(11,26);
document.write(d.getMonth()+" "+d.getDate());
輸出為:
9 19
11 26
16、setFullYear() 方法用于設(shè)置年份。
setFullYear(year,month,day);
year 必需。表示年份的四位整數(shù)。用本地時(shí)間表示。
month 可選。表示月份的數(shù)值,介于 0 ~ 11 之間。用本地時(shí)間表示。
day 可選。表示月中某一天的數(shù)值,介于 1 ~ 31 之間。用本地時(shí)間表示。
d.setFullYear(1992,10,3);
document.write(d);
輸出為:
Tue Nov 03 1992 11:31:58 GMT+0800
17、setHours() 方法用于設(shè)置指定的時(shí)間的小時(shí)字段。
setHours(hour,min,sec,millisec);
hour 必需。表示小時(shí)的數(shù)值,介于 0(午夜) ~ 23(晚上11點(diǎn)) 之間,以本地時(shí)間計(jì)(下同)。
min 可選。表示分鐘的數(shù)值,介于 0 ~ 59 之間。在 EMCAScript 標(biāo)準(zhǔn)化之前,不支持該參數(shù)。
sec 可選。表示秒的數(shù)值,介于 0 ~ 59 之間。在 EMCAScript 標(biāo)準(zhǔn)化之前,不支持該參數(shù)。
millisec 可選。表示毫秒的數(shù)值,介于 0 ~ 999之間。在 EMCAScript 標(biāo)準(zhǔn)化之前,不支持該參數(shù)。
d.setHours(15,35,1)
document.write(d)
輸出為:
Fri Oct 19 15:35:01 UTC+0800 2012
18、setMinutes() 方法用于設(shè)置指定時(shí)間的分鐘字段。
setMinutes(min,sec,millisec)
min 必需。表示分鐘的數(shù)值,介于 0 ~ 59 之間,以本地時(shí)間計(jì)(下同)。
sec 可選。表示秒的數(shù)值,介于 0 ~ 59 之間。在 EMCAScript 標(biāo)準(zhǔn)化之前,不支持該參數(shù)。
millisec 可選。表示毫秒的數(shù)值,介于 0 ~ 999 之間。在 EMCAScript 標(biāo)準(zhǔn)化之前,不支持該參數(shù)。
d.setMinutes(1)
document.write(d)
輸出為:
Fri Oct 19 11:01:11 UTC+0800 2012
19、setSeconds() 方法用于設(shè)置指定時(shí)間的秒字段。
setSeconds(sec,millisec)
sec 必需。表示秒的數(shù)值,該值是介于 0 ~ 59 之間的整數(shù)。
millisec 可選。表示毫秒的數(shù)值,介于 0 ~ 999 之間。在 EMCAScript 標(biāo)準(zhǔn)化之前,不支持該參數(shù)。
20、setMilliseconds() 方法用于設(shè)置指定時(shí)間的毫秒字段。
setMilliseconds(millisec)
millisec 必需。用于設(shè)置 dateObject 毫秒字段,該參數(shù)是介于 0 ~ 999 之間的整數(shù)。
21、setTime() 方法以毫秒設(shè)置 Date 對(duì)象。
此方法是比較常用的方法,在數(shù)據(jù)庫(kù)中存放Date.getTime()毫秒數(shù),
在返回時(shí)如何顯示出來(lái)呢,就是用此方法
setTime(millisec)
millisec 必需。要設(shè)置的日期和時(shí)間據(jù) GMT 時(shí)間 1997 年 1 月 1 日午夜之間的毫秒數(shù)。
這種類(lèi)型的毫秒值可以傳遞給 Date() 構(gòu)造函數(shù),可以通過(guò)調(diào)用 Date.UTC() 和 Date.parse() 方法獲得該值。以毫秒形式表示日期可以使它獨(dú)立于時(shí)區(qū)。
d.setTime(77771564221);
document.write(d);
輸出為:
Mon Jun 19 1972 11:12:44 GMT+0800
此種方法就可以根據(jù)數(shù)據(jù)庫(kù)中存放的long數(shù)據(jù)類(lèi)型將其轉(zhuǎn)換為了時(shí)間對(duì)象
22、toTimeString() 方法可把 Date 對(duì)象的時(shí)間部分轉(zhuǎn)換為字符串,并返回結(jié)果。
document.write(d.toTimeString());
輸出:
11:50:57 GMT+0800
23、toDateString() 方法可把 Date 對(duì)象的日期部分轉(zhuǎn)換為字符串,并返回結(jié)果。
document.write(d.toDateString());
輸出:
Fri Oct 19 2012
24、還有很多設(shè)計(jì)UTC時(shí)區(qū)的一些方法,此處沒(méi)有列出,僅僅是對(duì)一般的通用較多的方法匯總了下
查看更多JavaScript的語(yǔ)法,大家可以關(guān)注:《JavaScript 參考教程》、《JavaScript代碼風(fēng)格指南》,也希望大家多多支持腳本之家。
- 通過(guò)實(shí)例解析javascript Date對(duì)象屬性及方法
- JS使用Date對(duì)象實(shí)時(shí)顯示當(dāng)前系統(tǒng)時(shí)間簡(jiǎn)單示例
- JavaScript 中Date對(duì)象的格式化代碼方法匯總
- JS中使用new Date(str)創(chuàng)建時(shí)間對(duì)象不兼容firefox和ie的解決方法(兩種)
- javascript中Date對(duì)象的使用總結(jié)
- JavaScript Date對(duì)象詳解
- 詳解JavaScript的Date對(duì)象(制作簡(jiǎn)易鐘表)
- js用Date對(duì)象的setDate()函數(shù)對(duì)日期進(jìn)行加減操作
- JavaScript Date對(duì)象詳解及時(shí)間戳和時(shí)間的相互轉(zhuǎn)換問(wèn)題
相關(guān)文章
菜鳥(niǎo)學(xué)習(xí)JavaScript小實(shí)驗(yàn)之函數(shù)引用
由于變量b中保存的是函數(shù)的引用,當(dāng)函數(shù)變化時(shí),b也隨時(shí)變化,且不管函數(shù)出現(xiàn)的先后順序。兩次alert(b),雖然位置不一樣,但是內(nèi)容相同。2010-11-11javascript獲取函數(shù)名稱(chēng)、函數(shù)參數(shù)、對(duì)象屬性名稱(chēng)的代碼實(shí)例
這篇文章主要介紹了javascript獲取函數(shù)名稱(chēng)、函數(shù)參數(shù)、對(duì)象屬性的代碼實(shí)例,需要的朋友可以參考下2014-04-04JavaScript入門(mén)教程(5) js Screen屏幕對(duì)象
這是基本JavaScript的屏幕對(duì)象2009-01-01Javascript 實(shí)現(xiàn)簡(jiǎn)單計(jì)算器實(shí)例代碼
這篇文章主要介紹了Javascript 實(shí)現(xiàn)簡(jiǎn)單計(jì)算器實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2016-10-10JavaScript中日期的相關(guān)操作方法總結(jié)
這篇文章主要介紹了JavaScript中日期的相關(guān)操作方法總結(jié),是JS入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-10-10在javaScript中關(guān)于submit和button的區(qū)別介紹
submit是button的一個(gè)特例,也是button的一種,它把提交這個(gè)動(dòng)作自動(dòng)集成了,submit和button,二者都以按鈕的形式展現(xiàn),看起來(lái)都是按鈕,所不同的是type屬性和處發(fā)響應(yīng)的事件上2013-10-10