JS 的Date對象


一、獲取Date對象

      在JS中我們可以通過下面一段代碼獲取本地時間

var currentDate = new Date();
alert("currentDate:" + currentDate);

      這樣我們可以獲取到當前時間,其輸出信息如下:Sat Jul 27 2013 22:04:17 GMT+0800 (中國標准時間);

如果不想已這種形式出現,可以轉化為本地時間,使用方法toLocaleString即可,其輸出信息是:2013年7月27日 下午10:07:06。

這些都是很簡單的方式,相關的一些操作在網絡中也可以找的到,參考這個網站http://www.w3school.com.cn/js/jsref_obj_date.asp,可以獲取更多的信息。

在這里我想說說我之前遇到的一些問題和現象。

JS中我們有兩種方式可以創建Date對象,一個是通過數字參數new Date(yyyy,MM,dd),一個是通過字符串參數new Date('yyyy/MM/dd');其中yyyy代表的是年份,MM是月份,dd代表的是天。

      例如我們想創建2013/7/27這個日期對象,很容易想到的是我們會使用下面的兩種方式中的一種去創建對象

// 第一種方式
var date1 = new Date(2013, 7, 27);
// 第二種方式
var date2 = new Date('2013/7/27');

      問題是這兩者輸出來的日期信息是不同的,其中一個是准確的,還有一個就是不准確的了,如下我們可以看到結果

var date1 = new Date(2013, 7, 27);
document.write(date1);     // 輸出結果:Tue Aug 27 2013 00:00:00 GMT+0800 (中國標准時間)
document.write("<br />");
document.write(date1.toLocaleString());   // 輸出結果:2013年8月27日 上午12:00:00
document.write("<br />");

var date2 = new Date('2013/7/27');
document.write(date2); // 輸出結果:Sat Jul 27 2013 00:00:00 GMT+0800 (中國標准時間)
document.write("<br />"); 
document.write(date2.toLocaleString()); // 輸出結果: 2013年7月27日 上午12:00:00

      從上面的輸出方式可以觀察出,第一種方式創建的日期不對,比實際多一個月;而第二種方式是正確的。

二、獲取當前時間的年月日

     上面我們已經說過,我們可以直接通過new Date()獲取當前日期,那我們來看看getDate(),getMonth(),getFullYear()幾個函數獲取到的值

var currentDate = new Date();
document.write("Year:" + currentDate.getFullYear() + "<br />");
document.write("Month:" + currentDate.getMonth() + "<br />");
document.write("Day:" + currentDate.getDate() + "<br />");

/*
*下面是輸出結果:
*Year:2013
*Month:6
*Day:27
*/

      發現獲取的月份也是不對的,比實際的月份少了一個月,所以我就在想那么2013/1/1輸出的時間可能是2012/12/1,於是我將本地的時間修改成了2013/1/1,運行程序

      發現輸出的結果是:

Year:2013
Month:0
Day:1

      PS:開始我還沒有理解為什么這樣,通過實驗可以發現一個問題,即JS中對於月份的控制很有可能就是從0開始的,然后逐漸遞增,那么0表示1月,11則表示12月,這樣上面的一下現象就可以解釋的清楚了。

三、將日期格式2013-7-27轉化為2013/7/27

      在項目開發過程中,我們的日期控件格式很有可能是yyyy-MM-dd,而轉化為JS的日期,這種格式是不支持的,而只支持yyyy/MM/dd的格式,這個時候我們就需要將格式進行一下轉換,用下面兩行代碼,能夠輕松搞定

var sendDate = "2013-7-27"; // 這個是從前台控件獲取的值
var jsSendDate = new Date(Date.parse(sendDate.replace(/-/g, "/")));

      以上幾點是我在做項目的時候遇到的,起初還不是很明白為什么或出現上面幾種情況,通過寫這篇博文,我更加懂得了new Date(y,M,d)為什么會比實際大一個月的原因,雖然簡單了點,但是我依然希望能夠得到大家的支持與鼓勵。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM