JavaScript引用型別 Date型別

2021-07-16 06:58:38 字數 2696 閱讀 7191

要建立乙個日期物件,使用new操作符和date建構函式即可

var now = new date()

在呼叫date建構函式而不傳遞引數的情況下,新建立的物件自動獲得當前日期和時間。如果想根據特定的日期和時間建立日期物件,必須傳入表示該日期的毫秒數(即從utc時間2023年1月1日午夜起至該日期止經過的毫秒數)。為了簡化這一計算過程,ecmascript提供了兩個方法:date.parse()和date.utc()。

其中,date.parse()方法接收乙個表示日期的字串引數,然後嘗試根據這個字串返回相應日期的毫秒數。ecma-262沒有定義date.parse()應該支援哪種日期格式,因此這個方法的行為因實現而異,而且通常是因地區而異。將地區設定為美國的瀏覽器通常都接受下列日期格式:

例如,要為2023年5月25日建立乙個日期物件,可以使用下面的**:

var somedate = new date(date.parse("may 25, 2004"));

如果傳入date.parse()方法的字串不能表示日期,那麼它會返回nan。實際上,如果直接將表示日期的字串傳遞給date建構函式,也會在後台呼叫date.parse()。換句話說,下面的**與前面的例子是等價的:

var somedate = new date("may 25, 2004");

這行**將會得到與前面相同的日期物件。

日期物件及其在不同瀏覽器中的實現有許多奇怪的行為。其中有一種傾向是將超出範圍的值替換成當前的值,以便生成輸出。例如,在解析」january 32, 2007」時,有的瀏覽器會將其解釋為」february 1, 2007」。而opera則傾向於插入當前月份的當前日期,返回」january當前日期,2007」。也就是說,如果在2023年9月21日執行前面的**,將會得到」january 21, 2007」(都是21日)。

date.utc()方法同樣也返回表示日期的毫秒數,但它與date.parse()在構建值時使用不同的資訊。date.utc()的引數分別是年份、基於0的月份(一月是0,二月是1,以此類推)、月中的哪一天(1到31)、小時數(0到23)、分鐘、秒以及毫秒數。在這些引數中,只有前兩個引數(年和月)是必需的。如果沒有提供月中的天數,則假設天數為1;如果省略其他引數,則統統假設為0。以下是兩個使用date.utc()方法的例子:

gmt時間2023年1月1日午夜零時:

var y2k = new date(date.utc(2000, 0));

gmt時間2023年5月5日下午5:55:55:

var allfives = new date(date.utc(2005, 4, 5, 17, 55, 55));

如同模仿date.parse()一樣,date建構函式也會模仿date.utc(),但有一點明顯不同:日期和時間都基於本地時區而非gmt來建立。不過,date建構函式接收的引數仍然與date.utc()相同。因此,如果第乙個引數是數值,date建構函式就會假設該值是日期中的年份,而第二個引數是月份,以此類推。

本地時間2023年1月1日午夜零時:

var y2k = new date(2000, 0);

本地時間2023年5月5日下午5:55:55:

var allfives = new date(2005, 4, 5, 17, 55, 55);

ecmascript 5新增了data.now()方法,返回表示呼叫這個方法時的日期和時間的毫秒數。這個方法簡化了使用data物件分析**的工作。

var start = date.now()

支援data.now()方法的瀏覽器包括ie9+、firefox 3+、safari 3+、opera 10.5和chrome。在不支援它的瀏覽器中,使用+操作符把data物件轉換成字串,也可以達到同樣的目的。

與其他引用型別一樣,date型別也重寫了tolocalestring()、tostring()和valueof()方法;但這些方法(tolocalestring()、tostring())回的值與其他型別中的方法不同。

date型別的tolocalestring()方法會按照與瀏覽器設定的地區相適應的格式返回日期和時間。這大致意味著時間格式中會包含am或pm,但不會包含時區資訊(當然,具體的格式會因瀏覽器而異)。而tostring()方法則通常返回帶有時區資訊的日期和時間,其中時間一般以軍用時間(即小時的範圍是0到23)表示。

這兩個方法在不同的瀏覽器中返回的日期和時間格式可謂大相徑庭。事實上,tolocalestring()和tostring()的這一差別僅在除錯**時比較有用,而在顯示日期和時間時沒有什麼價值。

至於date型別的valueof()方法,則根本不返回字串,而是返回日期的毫秒表示。因此,可以方便使用比較操作符(小於或大於)來比較日期值。

date型別還有一些專門用於將日期格式化為字串的方法,這些方法如下。

與tolocalestring()和tostring()方法一樣,以上這些字串格式方法的輸出也是因瀏覽器而異的,因此沒有哪乙個方法能夠用來在使用者介面中顯示一致的日期資訊。

返回表示日期的毫秒數;與valueof()方法返回的值相同

JavaScript 引用型別

在js中,數值 布林值 null和undefined屬於基本型別,而物件 陣列和函式屬於引用型別。該博文要解決的兩個問題是 author 獵空de date 2012 3 8 ext.onready function test data var obj var arr obj obj.age 23 ...

JavaScript引用型別 Date型別

date型別使用自utc 國際協調時間 1970年1月1日零時 開始經過的毫秒數來儲存日期。有4種方法 var d new date var d new date milliseconds var d new date datestring var d new date year,month,day...

JavaScript引用型別 Date型別

要建立乙個日期物件,使用new操作符和date建構函式即可。如下所示 var date new date 在呼叫date函式建構函式而不傳遞引數的情況下,新建立的物件會自動獲取當前日期和時間。與其他引用型別一樣,date型別也重寫了tolocalestring tostring 和valueof 方...