一、獲取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)為什么會比實際大一個月的原因,雖然簡單了點,但是我依然希望能夠得到大家的支持與鼓勵。