整理 js 日期對象的詳細功能,使用 js 日期對象獲取具體日期、昨天、今天、明天、每月天數、時間戳等,以及常用的日期時間處理方法

来源:https://www.cnblogs.com/jiangweiping/archive/2022/12/04/16950035.html
-Advertisement-
Play Games

在 javascript 中內置了一個 Date 對象,可用於實現一些日期和時間的操作。 本文整理 js 日期對象的詳細功能,使用 js 日期對象獲取具體日期、昨天、今天、明天、每月天數、時間戳等,以及常用的日期時間處理方法。 ...


在 javascript 中內置了一個 Date 對象,可用於實現一些日期和時間的操作。

本文整理 js 日期對象的詳細功能,使用 js 日期對象獲取具體日期、昨天、今天、明天、每月天數、時間戳等,以及常用的日期時間處理方法。

在前端可以通過new Date()生成Date對象,如果沒有傳參數時,即獲取本地當前日期和時間。不過這時候顯示的內容並不是我們常見的日期格式,而是一個當前時區時間的描述文本,以下代碼顯示的效果如圖所示:

  const date = new Date();   console.log(date);

 

 

 

如果希望顯示的內容格式化為常見的日期格式,最簡單的辦法是調用 toLocaleString() 方法,如下所示:

  const date = new Date();
  console.log(date.toLocaleString());

 

 

new Date()可接受三種類型的參數

第一種是只傳入一個number類型的參數,一般是時間戳的毫秒數,返回參數數字所處的時間,如下所示:

  const date = new Date(946684800000);
  console.log(date.toLocaleString());

第二種也只傳入一個參數,參數類型是string,不過需要是正確的格式,如 "2010-10-10 10:10:10",返回對應的時間:

  const date = new Date("2010-10-10 10:10:10");
  console.log(date.toLocaleString());
第三種是可以傳入多個參數,總共可傳7個 number 類型的參數,分別是年,月(0~11),日,小時,分鐘,秒鐘,毫秒。這種方式的每一個參數值沒有規定範圍,Date對象會自動幫我們算出對應的時間。 比如我們傳入的月是12,那麼生成的日期會自動修正為第二年的1月。如下所示:
  const date = new Date(2022,12,1,10,10,10,999);
  console.log(date.toLocaleString());
  Date對象還提供了很多方法,根據需要實現的功能,在下麵列出一些常用的方法。 一、獲取時間戳 時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起到現在的總毫秒數。獲取時間戳的方法挺多,常見的有如下幾種: 最常用的 getTime 方法
  const date = new Date();
  console.log(date.getTime());
還有一種 Date.now() 方法,這是ECMAScript 5.1版本給Date對象增加的靜態方法。Date.now的速度比getTime快一倍以上,應該是獲取時間戳最快的方法。
console.log(Date.now());
valueOf方法是返回對象的原始值,在Date對象上也是返回時間戳,一般很少有人使用這個方法獲取時間戳
  const date = new Date();
  console.log(date.valueOf());
最簡單粗暴的方法,是直接把創建的Date對象轉換為數字,+new Date(),不過性能更差一點
  const date = new Date();
  console.log(+date);

 

二、獲取常用時間數據

Date對象可以分別獲取到本地年、月、日、小時、分鐘、秒鐘、毫秒等數據,方法如下:     date.getFullYear():獲取年     date.getMonth():獲取月     date.getDate():獲取日     date.getDay():獲取一周的某一天(0~6)     date.getHours():獲取小時     date.getMinutes():獲取分鐘     date.getSeconds():獲取秒     date.getMilliseconds():獲取毫秒 使用這些方法,可以靈活的顯示日期時間格式,以下是一個格式化當前日期時間的函數:
  function formatDate(){
    // 創建日期對象
    const date = new Date();
    // 獲取各日期/時間數據
    let year = date.getFullYear();
    let month = date.getMonth();
    let DD = date.getDate();
    let hour = date.getHours();
    let minute = date.getMinutes();
    let second = date.getSeconds();
    let day = date.getDay();
    // 拼接日期時間為字元串
    let time = year + '年' + month + '月' + DD + '日 ' + hour + ':' + minute + ':' + second + ' 星期' + ['日','一','二','三','四','五','六',][day];
    return time
  }
  console.log(formatDate())

 

 三、設置日期時間

除了在創建Date對象時,通過參數獲取到對應時間的Date對象,也可以設置Date對象的時間。     date.setFullYear():設置年,setFullYear()可以傳3個參數,其中第2個和第3個是可選的,分別是要設置的年,月,日;     date.setFullYear():設置月,預期值是 0~11,-1 將設置為上一年的最後一個月、12 將設置為明年的第一個月。setMonth()可以傳2個參數,其中第2個是可選的,分別是要設置的月,日;     date.setDate():設置日,預期值是 1~31;0 會設置為上個月的最後一天、-1 將設置為上個月的最後一天的前一天、如果一個月有 31 天:32 將導致下個月的第一天;     date.setHours():設置小時(0~23),setHours()可以傳4個參數,其中第2、3、4個是可選的,分別是要設置的時,分,秒,毫秒;     date.setMinutes():設置分鐘(0~59),setMinutes()可以傳3個參數,其中第2個和第3個是可選的,分別是要設置的分,秒,毫秒     date.setSeconds():設置秒(0~59),setSeconds()可以傳2個參數,其中第2個是可選的,分別是要設置的秒,毫秒     date.setMilliseconds():設置毫秒(0~59) 使用設置日期方法,可以實現一些獲取指定日期時間的功能。   如果要獲取2020年的當前時間,就可以使用 setFullYear() 方法輕鬆實現,如下所示:
  const date = new Date();
  date.setFullYear(2020)
  console.log(date.toLocaleString());

 

又如獲取今年二月的最後一天(即當月的天數):
  const date = new Date();
  date.setMonth(2,0);
  console.log(date.getDate());

 

再或者獲取昨天和明天的日期:
  const date = new Date();
  date.setDate(date.getDate() + 1);
  console.log('明天是',date.toLocaleString());
  date.setDate(date.getDate() - 2);
  console.log('昨天是',date.toLocaleString());

 

在實際工作中,會經常需要獲取到特定的日期。可以封裝一個函數,用於獲取當前日期的前n天或後n天
  function getSpecificDate(day){
    //計算出要加/減的毫秒數
    var num = 1000*60*60*24*day;
    var newDate = new Date(Date.now()+num);
    return newDate;
  }

  console.log('明天是',getSpecificDate(1).toLocaleString());
  console.log('後天是',getSpecificDate(2).toLocaleString());
  console.log('昨天是',getSpecificDate(-1).toLocaleString());

 

 還有一種很方便的,給Date的原型方法中加入format方法,這樣在Date對象上可以直接使用format方法格式化所需要的日期。如下所示:

  Date.prototype.format = function(format){
    var o =  {
    "M+" : this.getMonth()+1, //month
    "d+" : this.getDate(), //day
    "h+" : this.getHours(), //hour
    "m+" : this.getMinutes(), //minute
    "s+" : this.getSeconds(), //second
    "q+" : Math.floor((this.getMonth()+3)/3), //quarter
    "S" : this.getMilliseconds() //millisecond
    };
    if(/(y+)/.test(format)){
      format = format.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
    }
    for(var k in o)  {
      if(new RegExp("("+ k +")").test(format)){
      format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));
      }
    }
    return format;
  };
  console.log(new Date().format('yyyy-MM-dd hh:mm:ss'))

 

註: 在國內一般的項目都只需要獲取本地時間就足夠了,如果涉及到國外的項目,就可能需要獲取世界標準時間。獲取世界標準時間的方法就是在獲取本地時間的方法中加上UTC,如 getUTCDate
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、塊設備簡介 塊設備驅動是存儲設備驅動,塊設備驅動相比字元設備驅動的主要區別如下: ①、塊設備只能以塊為單位進行讀寫訪問,塊是 linux 虛擬文件系統(VFS)基本的數據傳輸單位。字元設備是以位元組為單位進行數據傳輸的,不需要緩衝。 ②、塊設備在結構上是可以進行隨機訪問的,對於這些設備的讀寫都是按 ...
  • 一、寫在前 知識學了就忘!不用就忘!我太健忘!特此記錄!用於複習打卡!Redis乾就完事了! 二、來辣! Redis做非同步隊列:一般list結構做隊列,rpush生產消息,lpop消費消息,當lpop沒有消息的時候,要適當sleep一會兒;如果不sleep,就用blpop,會阻塞;生產一次消費多次, ...
  • 1.3 Apache Hadoop的重要組成 Hadoop=HDFS(分散式文件系統)+MapReduce(分散式計算框架)+Yarn(資源協調框架)+Common模塊 Hadoop HDFS:(Hadoop Distribute File System )一個高可靠、高吞吐量的分散式文件系統 比如 ...
  • 和一個真正iOS開發的區別? 學習iOS的這段時間, 我一直在思考和感受著自己和一個真正做了幾年iOS的dev之間的區別. 同時也在反向思考, 我自己和一個新學Android的人, 又有什麼區別. 也許在技術轉型中, 這些學習的思考和陣痛都是有共性和不可避免的. 在此分享一下感受, 如果有人也有技術 ...
  • 最近在開發時,遇到相同的頁面,很多函數和佈局也大差不多,所以向在路由註冊時就給他們分配不同的路由,通過一些判斷走不同的邏輯獲取數據。 ...
  • /** * 替換字元串,預設替換 ""。傳遞 regExps,一個正則表達式數組。 * * @param source 被修剪的字元串 * @param regExps 正則表達式,找到匹配的字元串,然後替換掉 * @param replacement 不傳遞,預設被替換的字元串是 ""。傳遞的數組 ...
  • 作為後端程式員,瞭解和掌握一些前端知識也是必不可少的,本章就和大家分享Vue的一些基礎知識,希望能夠對Vue小白有所幫助。話不多說,下麵我們直接進入主題。 一、Vue簡介 Vue簡介:1、JavaScript框架;2、簡化Dom操作;3、響應式的數據驅動(頁面是由數據來生成的,當數據改變以後頁面會同 ...
  • JQuery04 6.jQuery的DOM操作02 6.9常用遍歷節點方法 取得匹配元素的所有子元素組成的集合:children(),該方法只考慮子元素而不考慮任何後代元素 取得匹配元素後面的同輩元素的集合:next()/nextAll() 如果是next方法,就是拿到指定元素後面的一個元素,如果是 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...