摘要:實際上如果我們直接將字符串傳入構造函數,后臺也會調用方法。而直接與方法參數相同的值傳入構造函數,獲取的日期對象都是基于系統設置的本地時間創建的。中國標準時間中國標準時間中國標準時間由上面的代碼可以發現,其實是的引用,發生變化時,也隨之改變。
Date類型最近的項目需要實現一個時間表格的效果,如下圖所示,每次更換第幾周時也更新對應的日期。使用了Date類型,也踩了些坑。故寫下此篇筆記。
ECMAScript中的Date類型是在早期Java中的java.util.Date類基礎上構建的。使用自UTC(1970
年1月1日零時)開始經過的毫秒數來保存日期
獲取當前時間
var d = new Date();//無參數時自動獲得當前日期和時間
獲取特定日期時間
Date.parse()
var someday = new Date(Date.parse("Jul 1 2016"));
Date.UTC()
var someday = new Date(Date.UTC(2016,6,1,22,06,15));
具體含義
Date.parse()接受一個表示日期的字符串參數,若不能表示日期則返回NaN。實際上如果我們直接將字符串傳入構造函數,后臺也會調用Date.parse()方法。可接受的日期格式包括:6/15/2016;July 12,2016;Fri, July 25 2016 00:00:00 GMT-0700(時區);2016-07-01T00:00:00【最后一種表示反射只有兼容ECMAScript5的支持】
Date.UTC()構造的參數分別是年份、基于0的月份(0-11)、月中的哪天(1-31),小時(0-23),分鐘、秒、毫秒。其中年和月的參數是必需的,若沒有提供后面的參數,則默認為第一天,0時0分0秒。
需要注意的是,不同瀏覽器對于日期的解釋有所差異。調用Date.UTC()方法時,直接console.log()出來的結果是當地時間,而不是GMT時間。但實際上UTC返回的是GMT時間。而直接與UTC方法參數相同的值傳入Date()構造函數,獲取的日期對象都是基于系統設置的本地時間創建的。
調用方法時的日期和時間的毫秒數,時間戳//使用Date.now()方法【IE9+,Firefox 3+,Safari 3+,Opera 10.5,Chrome】 var start = Date.now();//開始時間 doSomething();//調用函數 var end = Date.now();//停止時間 var result = end-start;//執行時間 //使用+獲取Date對象的時間戳【運行有誤?望了解的人能告知】 var start = +new Date(); doSomething(); var end = +new Date(); var result = end - start; //使用valueOf()獲取時間戳 var start = (new Date()).valueOf(); //使用parse()獲取時間戳 var start = Date.parse(new Date());日期格式化方法
toLocaleString();
//"2016/7/1 下午11:01:45"
toString()
//"Fri Jul 01 2016 23:01:45 GMT+0800 (中國標準時間)"
toDateString()
//"Fri Jul 01 2016"
toTimeString()
//"23:01:45 GMT+0800 (中國標準時間)"
toLocaleDateString()
//"2016/7/1"
toLocaleTimeString()
//"下午11:01:45"
toUTCString()
//"Fri, 01 Jul 2016 15:01:45 GMT"
但這些方法中,輸出也是因瀏覽器而異。以上顯示均在Chrome控制臺輸出。
日期時間組件方法這次項目中所用到的方法即是setDate()方法,獲取當天時間后,再利用setDate(today.getDate()+/-n)去獲取日期。setDate()傳入的參數若超過了該月中應有的天數,則增加月份。setDate()的返回值是時間戳,不能直接用today.setDate(n).toLocaleDateString(),而是應該在setDate(n)后再調用today.toLocaleDateString();
除此之外,這次還牽扯到對象引用的問題。
var x = new Date(); var y = x; console.log(x);//Sat Jul 02 2016 00:08:10 GMT+0800 (中國標準時間) x.setDate(15); console.log(x);//Fri Jul 15 2016 00:08:10 GMT+0800 (中國標準時間) console.log("y",y);//y Fri Jul 15 2016 00:08:10 GMT+0800 (中國標準時間)
由上面的代碼可以發現,y其實是x的引用,x發生變化時,y也隨之改變。若想改變這種情況,可使用var y = new Date(x);則y與x則不同。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/79831.html
摘要:將他們放在堆中是為了不影響棧的效率。所以簡單數據類型的值直接存放在棧中。可以對比上面那張圖默認是調用方法的依,于是等于空字符串。空字符串中國標準時間方法返回對象的原始值,可能是字符串數值或值等,看具體的對象。,需要兩個操作數同時轉為。 你是否在面試中遇到過各種奇葩和比較細節的問題? []==[] //false []==![] //true {}==!{} //false {}==![...
摘要:它將返回目標對象。有些文章說是深拷貝,其實這是不正確的。深拷貝相比于淺拷貝速度較慢并且花銷較大。拷貝前后兩個對象互不影響。使用深拷貝的場景完全改變變量之后對沒有任何影響,這就是深拷貝的魔力。 一、賦值(Copy) 賦值是將某一數值或對象賦給某個變量的過程,分為: 1、基本數據類型:賦值,賦值之后兩個變量互不影響 2、引用數據類型:賦址,兩個變量具有相同的引用,指向同一個對象,相互之間有...
摘要:雖然會輸出,但是這只是存在的一個悠久。在的最初版本中使用的是位系統,為了性能考慮使用低位存儲變量的類型信息,開頭代表是對象,然而表示為全零,所以將它錯誤的判斷為。 參考來源: JavaScript高級程序設計:?book.douban.com/subject/105… 千古壹號:?github.com/qianguyihao… 小冊前端面試之道:?juejin.im/book/5bdc71…...
摘要:專題系列第四篇,講解類型判斷的各種方法,并且跟著寫一個函數。返回值為表示操作數類型的一個字符串。考慮到實際情況下并不會檢測和,所以去掉這兩個類型的檢測。 JavaScript專題系列第四篇,講解類型判斷的各種方法,并且跟著 jQuery 寫一個 type 函數。 前言 類型判斷在 web 開發中有非常廣泛的應用,簡單的有判斷數字還是字符串,進階一點的有判斷數組還是對象,再進階一點的有判...
摘要:返回如下仔細分析下面的圖,將會加深你的理解和我們有一個類對象有一個屬性,其指向構造器的原型是一個類構造器是之后產生的。 擼js基礎之對象 圖例 showImg(https://segmentfault.com/img/remote/1460000015949904?w=768&h=448); 先談談 ECMAScript 中的數據類型 ES6 之前 ECMAScript 中有 5 種...
閱讀 1845·2023-04-25 14:49
閱讀 3127·2021-09-30 09:47
閱讀 3119·2021-09-06 15:00
閱讀 2233·2019-08-30 13:16
閱讀 1448·2019-08-30 10:48
閱讀 2677·2019-08-29 15:11
閱讀 1297·2019-08-26 14:06
閱讀 1671·2019-08-26 13:30