摘要:本文是重溫基礎系列文章的第七篇。系列目錄復習資料資料整理個人整理重溫基礎語法和數據類型重溫基礎流程控制和錯誤處理重溫基礎循環和迭代重溫基礎函數重溫基礎表達式和運算符重溫基礎數字本章節復習的是中的時間對象,一些處理的方法。
本文是 重溫基礎 系列文章的第七篇。
今日感受:做好自律。
系列目錄:
【復習資料】ES6/ES7/ES8/ES9資料整理(個人整理)
【重溫基礎】1.語法和數據類型
【重溫基礎】2.流程控制和錯誤處理
【重溫基礎】3.循環和迭代
【重溫基礎】4.函數
【重溫基礎】5.表達式和運算符
【重溫基礎】6.數字
本章節復習的是JS中的時間對象,一些處理的方法。
前置知識:
JavaScript中的時間是以1970年1月1日00:00:00以來的毫秒數來儲存數據類型。
Data對象的范圍是相對距離UTC1970年1月1日的前后100,000,000天。
創建一個時間對象:
let d = new Date([params]);
參數params可以是:
無參數:默認創建今天的日期和時間。
一個符合以下格式的表示日期的字符串:
"月 日, 年 時:分:秒."或者"年月日 時分秒"
let d = new Date("2018-12-20");
如果你省略時、分、秒,那么他們的值將被設置為0。
一個年,月,日的整型值的集合:
let d = new Date(2018, 12, 20);
一個年,月,日,時,分,秒的集合:
let d = new Date(2018, 12, 20, 23, 20, 10);
這里Date對象涉及到的方法特別多,請移步W3school JavaScript Date 對象
1.Date對象的方法常用處理的方法有以下幾類:
"set":用于設置Date對象的日期和時間的值。
"get":用去獲取Date對象的日期和時間的值。
"to":用于返回Date對象的字符串格式的值。
"parse和UTC":用于解析Date字符串。
需要注意的Date對象的一些數值問題:
秒/分: 0 - 59;
時: 0 - 23;
星期: 0(周日) - 6(周六)
日期: 1 - 31
月份: 0(一月) - 11(十二月)
年份: 從1900開始的年數
例如:
let d = new Date("2018-12-10"); let d1 = d.getMonth(); // 11 let d2 = d.getFullYear(); // 2018
獲取今年剩下的天數:
let d = new Date(); let e = new Date(2018, 11, 31, 23, 59, 59, 999); // 設置年月日時分秒 e.setFullYear(d.getFullYear); // 設置為今年 let m = 24 * 60 * 60 * 1000; // 每日毫秒數 let result = (e.getTime() - d.getTime()) / m; result = Math.round(result); // 返回今年剩余天數
這里Date對象涉及到的方法特別多,請移步W3school JavaScript Date 對象
注意:
格林尼治標準時間(GMT)英國、愛爾蘭、冰島和葡萄牙屬于該時區。這個時區與中國北京時間的時差是8個小時,也就是說比北京時間晚8個小時。2.使用Date對象 2.1 設置日期
為一個時間對象設置指定日期(2018年12月20日),注意這里:和前面說的一樣,12月在JS的Date對象中,是用11表示。
let d = new Date(); d.setFullYear(2018,11,20);
設置時間對象10天以后:
let d = new Date(); d.setDate(d.getDate() + 10); // 先獲取當天的日期,再設置到指定天數以后2.2 比較時間
通常情況下,像下面這樣簡單比較:
let d = new Date(); let e = new Date(); d.setFullYear(2018,10,10); let r = d > e ? "good" : "nice" ; // nice
還可以比較兩個日期相差多少天:
let d1 = new Date("2018-10-10"); let d2 = new Date("2018-11-11"); let d3 = (d2 - d1) / (1000 * 60 * 60 * 24); // 322.3 計算N天后星期幾
function d (num){ if(typeof Number(num) === "number"){ let d1 = new Date(); let d2 = d1.setDate(d1.getDate() + Number(num)); let n = new Date(d2).getDay(); let s = ""; switch (n){ case 0 : s = "星期天"; break; case 1 : s = "星期一"; break; case 2 : s = "星期二"; break; case 3 : s = "星期三"; break; case 4 : s = "星期四"; break; case 5 : s = "星期五"; break; case 6 : s = "星期六"; break; } return s; }else { alert("請輸入正確數字!"); } }2.4 格式化日期
常見的日期格式化為字符串的方法有這些:
toDateString()——以特定于實現的格式顯示星期幾、月、日和年;
toTimeString()——以特定于實現的格式顯示時、分、秒和時區;
toLocaleDateString()——以特定與地區的格式顯示星期幾、月、日和年;
toLocaleTimeString()——以特定于實現的格式顯示時、分、秒;
toUTCString()——以特定于實現的格式完整的UTC日期。
獲取并格式化日期:年-月-日:
function d (date){ return date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate(); } d(new Date()); // "2018-12-20"
日期字符串轉為 年-月-日:
function d (str){ return new Date(Date.parse(str.replace(/-/g, "/"))); // 或者 // return new Date(str.replace(/-/g, "/")); }
獲取當前星期幾:
let d = "今天是星期" + "日一二三四五六".charat(new Date().getDay());2.5 獲取某年某月的天數
這里有個小技巧,若給new Date()傳入一個如aaaa/aa/0參數時,可以得到aa月的前一個月的最后一天,如傳入2018/12/0會得到2018/11/30。
值得注意的是: 在Chrome瀏覽器上并不支持,會返回Invalid Date導致結果為NaN,但是我們可以使用aaaa,aa,0形式作為參數,下面分別寫出這兩種:
// aaaa/aa/0形式 只要傳入年和月 function d (y, m){ m = parseInt(m, 10) + 1; let r = new Date(y + "/" + m + "/0"); return r.getDate(); } // aaaa,aa,0形式 只要傳入年和月 function d (y, m){ m = parseInt(m, 10) + 1; let r = new Date(y, m, 0); return r.getDate(); }2.6 獲取上個月/下個月日期("yyyy-mm-dd")
傳入參數的格式"yyyy-mm-dd",其實也可以是Date()對象,大家可以自行嘗試。
// 上個月 date格式"yyyy-mm-dd" function my_date (date){ let arr = date.split("-"); let y = arr[0] , m = arr[1], d = arr[2]; // 獲取當前的年月日 // ES6語法 let [y,m,d] = arr; let day = new Date(y,m,0); day = day.getDate(); // 獲取當前月份的天數 let y2 = y, m2 = parseInt(m) - 1; if(m2 == 0){ y2 = parseInt(y2) -1; m2 = 12; } let d2 = d, day2 = new Date(y2, m2, 0); day2 = day2.getDate(); if(d2 > day2){ d2 = day2; } if(m2 < 10){ m2 = "0" + m2; } return y2 + "-" + m2 + "-" + d2; } my_date("2018-1-20"); //"2017-12-20"
下個月的計算方法也是相似:
// 上個月 date格式"yyyy-mm-dd" function my_date (date){ let arr = date.split("-"); let y = arr[0] , m = arr[1], d = arr[2]; // 獲取當前的年月日 let day = new Date(y,m,0); day = day.getDate(); // 獲取當前月份的天數 // 和計算上個月的區別 let y2 = y, m2 = parseInt(m) + 1; if(m2 == 13){ y2 = parseInt(y2) + 1; m2 = 1; } let d2 = d, day2 = new Date(y2, m2, 0); day2 = day2.getDate(); if(d2 > day2){ d2 = day2; } if(m2 < 10){ m2 = "0" + m2; } return y2 + "-" + m2 + "-" + d2; } my_date("2018-12-20"); // "2019-01-20"參考資料
1.MDN 數字和日期
2. JS日期Date詳解與實例擴展
本部分內容到這結束
Author | 王平安 |
---|---|
pingan8787@qq.com | |
博 客 | www.pingan8787.com |
微 信 | pingan8787 |
每日文章推薦 | https://github.com/pingan8787... |
JS小冊 | js.pingan8787.com |
歡迎關注微信公眾號【前端自習課】每天早晨,與您一起學習一篇優秀的前端技術博文 .
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/100267.html
摘要:本文是重溫基礎系列文章的第十一篇。返回一個布爾值,表示該值是否為的成員。使用回調函數遍歷每個成員。與數組相同,對每個成員執行操作,且無返回值。 本文是 重溫基礎 系列文章的第十一篇。 今日感受:注意身體,生病花錢又難受。 系列目錄: 【復習資料】ES6/ES7/ES8/ES9資料整理(個人整理) 【重溫基礎】1.語法和數據類型 【重溫基礎】2.流程控制和錯誤處理 【重溫基礎】3....
摘要:本文是重溫基礎系列文章的第十四篇。元,是指程序本身。有理解不到位,還請指點,具體詳細的介紹,可以查看維基百科元編程。攔截,返回一個布爾值。 本文是 重溫基礎 系列文章的第十四篇。 這是第一個基礎系列的最后一篇,后面會開始復習一些中級的知識了,歡迎持續關注呀! 接下來會統一整理到我的【Cute-JavaScript】的JavaScript基礎系列中。 今日感受:獨樂樂不如眾樂樂...
摘要:本文是重溫基礎系列文章的第十二篇。注意對象的名稱,對大小寫敏感。基礎用法第一個參數是目標對象,后面參數都是源對象。用途遍歷對象屬性。用途將對象轉為真正的結構。使用場景取出參數對象所有可遍歷屬性,拷貝到當前對象中。類似方法合并兩個對象。 本文是 重溫基礎 系列文章的第十二篇。 今日感受:需要總結下2018。 這幾天,重重的感冒發燒,在家休息好幾天,傷···。 系列目錄: 【復習資料...
摘要:構造函數通常首字母大寫,用于區分普通函數。這種關系常被稱為原型鏈,它解釋了為何一個對象會擁有定義在其他對象中的屬性和方法。中所有的對象,都有一個屬性,指向實例對象的構造函數原型由于是個非標準屬性,因此只有和兩個瀏覽器支持,標準方法是。 從這篇文章開始,復習 MDN 中級教程 的內容了,在初級教程中,我和大家分享了一些比較簡單基礎的知識點,并放在我的 【Cute-JavaScript】系...
摘要:字符串拓展在我們判斷字符串是否包含另一個字符串時,之前,我們只有方法,之后我們又多了三種方法返回布爾值,表示是否找到參數字符串。返回布爾值,表示參數字符串是否在原字符串的頭部。 本文是 重溫基礎 系列文章的第八篇。今日感受:人在異鄉,也不能忘記湯圓。 系列目錄: 【復習資料】ES6/ES7/ES8/ES9資料整理(個人整理) 【重溫基礎】1.語法和數據類型 【重溫基礎】2.流程控制和...
閱讀 3382·2021-11-22 13:53
閱讀 3422·2021-10-11 11:11
閱讀 937·2019-08-30 14:12
閱讀 1227·2019-08-29 17:16
閱讀 647·2019-08-29 16:45
閱讀 3359·2019-08-29 12:56
閱讀 676·2019-08-28 17:55
閱讀 2071·2019-08-26 13:24