日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【重温基础】7.时间对象

發布時間:2025/3/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【重温基础】7.时间对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文是 重溫基礎 系列文章的第七篇。 今日感受:做好自律。

系列目錄:

  • 【復習資料】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); // 32 復制代碼

2.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王平安
E-mailpingan8787@qq.com
博 客www.pingan8787.com
微 信pingan8787
每日文章推薦github.com/pingan8787/…
JS小冊js.pingan8787.com

歡迎關注我的微信公眾號【前端自習課】

總結

以上是生活随笔為你收集整理的【重温基础】7.时间对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。