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