javascript中關於日期和時間的基礎知識

来源:http://www.cnblogs.com/xiaohuochai/archive/2016/07/12/5663214.html
-Advertisement-
Play Games

[1]標準時間 [2]字元串 [3]閏年 [4]月日 [5]星期 [6]時分秒 ...


×
目錄
[1]標準時間 [2]字元串 [3]閏年[4]月日[5]星期[6]時分秒

前面的話

  在介紹Date對象之前,首先要先瞭解關於日期和時間的一些知識。比如,閏年、UTC等等。深入瞭解這些,有助於更好地理解javascript中的Date對象。本文將介紹javascript關於日期和時間的基礎知識

 

標準時間

  一般而言的標準時間是指GMT和UTC,以前是GMT,現在是UTC

GMT

  格林尼治標準時間(GMT)是指位於倫敦郊區的皇家格林尼治天文臺的標準時間,因為本初子午線被定義在通過那裡的經線

  理論上來說,格林尼治標準時間的正午是指當太陽橫穿格林尼治子午線時(也就是在格林尼治上空最高點時)的時間。由於地球在它的橢圓軌道里的運動速度不均勻,這個時刻可能和實際的太陽時相差16分鐘

  地球每天的自轉是有些不規則的,而且正在緩慢減速。所以,格林尼治時間已經不再被作為標準時間使用。現在的標準時間——世界協調時間(UTC)提供

UTC

  世界協調時間(UTC)又稱世界統一時間,世界標準時間,國際協調時間,全稱Coordinated Universal Time,是以原子時秒長為基礎,在時刻上儘量接近於世界時的一種時間計量系統 

  這套時間系統被應用於許多互聯網和萬維網的標準中,中國大陸、中國香港、中國澳門、中國臺灣、蒙古國、新加坡、馬來西亞、菲律賓、西澳大利亞州的時間與UTC的時差均為+8,也就是UTC+8

  在軍事中,協調世界時區會使用“Z”來表示。又由於Z在無線電聯絡中使用“Zulu”作代稱,協調世界時也會被稱為"Zulu time"

 

日期時間字元串格式

  ECMAScript定義了一個基於簡化的ISO8601擴展格式的日期時間的字元串互換格式

  日期時間完整格式為:  YYYY-MM-DDTHH:mm:ss.sssZ

  [註意]前置0不能省略,否則在完整格式的情況下會報錯

YYYY        西曆中年的十進位數字,如果這個參數值在0-99之間,則向它加上1900
-           在字元串中直接以“-”(破折號)出現兩次
MM          一年中的月份,從01(一月)到12(十二月)
DD          月份中的日期,從01到31
T           在字元串中直接以“T”出現,用來表明時間元素的開始
HH          用兩個十進位數字表示的,自午夜0點以來的小時數
:           在字元串中直接以“:”(冒號)出現兩次
mm          是用兩個十進位數字表示的,自小時開始以來的分鐘數
ss          是用兩個十進位數字表示的,自分開始以來的秒數
.           在字元串中直接以“.”(點)出現
sss         是用三個十進位數字表示的,自秒開始以來的毫秒數
Z           是時區偏移量,由(“Z”(指UTC)或“+”或“-”)和後面跟著的時間表達式hh:mm組成

  只表示日期的格式:  YYYY YYYY-MM YYYY-MM-DD

  [註意]所有數字必須是10進位的。如果缺少MM或DD欄位,用“01”作為它們的值。如果缺少mm或ss欄位,用“00”作為它們的值,對於缺少的sss用“000”作為它的值。對於缺少的時區偏移量用“Z”

 

閏年

  年分為閏年和平年,平年有365天,閏年有366天,閏年的2月比平年多一天

  閏年的定義是(可被4整除)且((不可被100整除)或(可被400整除))的年份

  口訣是:四年一閏,百年不閏,四百年再閏

function IsLeapYear(year){
    if(typeof year == 'number'){
        if((year % 4 === 0 && year % 100 !== 0)  || year % 400 === 0){
            return 'leap year'
        }else{
            return 'common year'
        }
    }
    return 'please input number'
}
console.log(IsLeapYear(4));//'leap year'
console.log(IsLeapYear(400));//'leap year'
console.log(IsLeapYear(2000));//'leap year'
console.log(IsLeapYear(1900));//'common year'

 

月日

  一年有12個月,其中4、6、9、11月每月有30天;如果是閏年,2月有29天,否則 ,2月有28天。1、3、5、7、8、10、12月每月有31天

  在javascript中,月的計算從0開始,所以1-12月,分別用0-11來表示;而日的計算則從1開始,1就代表第1天,以此類推

if(month == 2){
    //如果是閏年
    if((year % 4 === 0 && year % 100 !== 0)  || year % 400 === 0){
        days = 29;
    //如果是平年
    }else{
        days = 28;
    }
//如果是第4、6、9、11月
}else if(month == 4 || month == 6 ||month == 9 ||month == 11){
    days = 30;
}else{
    days = 31;
}

  在javascript中,月份的簡寫經常在日期字元串中使用

一月       Jan January
二月       Feb February
三月       Mar March
四月       Apr April
五月       May May
六月       Jun June
七月       Jul July
八月       Aug August
九月       Sep September
十月       Oct October
十一月     Nov November
十二月     Dec December

 

星期

  星期是從星期日開始,到星期六結束,分別用0-6來表示

  在javascript中,各星期的簡寫經常在日期字元串中使用

星期日    sunday         Sun
星期一    monday         Mon
星期二    Tuesday        Tue
星期三    Wednesday      Wed
星期四    Thursday       Thu
星期五    Fridday        Fri
星期六    Saturday       Sar

 

時分秒

    1天 = 24小時 = 24*60(1440)分 = 24*60*60(86400)秒 = 86,400,000毫秒
    1分= 60秒
    1小時 = 3600秒
    1天 = 86400秒

  Date對象返回的是一個毫秒數,經常需要將其換算成時分秒的形式

date = 100000s
day(天) = Math.floor(100000/86400) = 1
hour(小時) = Math.floor((100000%86400)/3600) = 3
minute(分) = Math.floor((100000%3600)/60) = 46
second(秒) = Math.floor(100000%60)=40
console.log(100000 === 1*86400+ 3*3600+ 46*60+40);//true

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Java.util.zip 提供用於讀寫標準 ZIP 和 GZIP 文件格式的類。 還包括使用 DEFLATE 壓縮演算法(用於 ZIP 和 GZIP 文件格式)對數據進行壓縮和解壓縮的類。 依賴 Jdk 編寫該工具類,不依賴任何第三方 jar,隨用隨取,實現功能大體如下: 1.目錄級別遞歸壓縮與解壓 ...
  • c++ auto_ptr智能指針 該類型在頭文件memory中,在程式的開通通過 #include<memory> 導入,接下來講解該智能指針的作用和使用。 使用方法: auto_ptr<type> ptr(new type()); 這是該指針的定義形式,其中 type 是指針指向的類型,ptr 是 ...
  • 前文Selenium2入門(一)說到Selenium是Web 應用程式測試框架,那麼如果對一個簡單的web應用需求:打開瀏覽器,登錄百度首頁,輸入“歐洲杯”關鍵詞,點擊搜索按鈕 這一系列操作,能否用Selenium進行執行呢?可以,下麵介紹的WebDriver就是可以完成這項任務的方法之一: Web ...
  • 目錄: 1.StringBuffer和StringBuilder有什麼區別?假設有一個方法,方法內部需要定義一個對象,可能是StringBuffer或StringBuilder,接下來會多次append操作,方法結束時,返回這個對象的toString()結果,並且這個線程會被多線程併發訪問,請選擇這 ...
  • 回到目錄 關於依賴倒置(DIP) 高層模塊不依賴於低層模塊的實現,而低層模塊依賴於高層模塊定義的介面,通俗的講,就是高層模塊定義介面,低層模塊負責實現,這在我們實際開發中經常被用到,層與層之間引用,經常被添加一個介面層去隔離,在介面層定義相關業務規範,而底層去實現它,高層只引用這個介面,當高級需要其 ...
  • 回到目錄 對於一個後臺管理系統來說,你的許可權設計與安全是重中之重,當你為一個許可權分配一些菜單後,當這個許可權的用戶沒有菜單許可權時,這個菜單的URL是不可以被用戶訪問的,而在之前的設計中,沒有考慮到這點,所以本次Lind.DDD.Manager的升級中,需要把這塊完善一下,將會在8月的Lind.DDD中 ...
  • 上一篇《[讓 Generator 自啟動][generator]》介紹了通過起動器讓 Generator 跑起來,而本篇採用 async 實現更優雅的非同步編程。 <! more 從例子開始 借用上一篇例子中的例子說起。 然後,我們需要寫一個啟動器來啟動這個函數。 而採用 async 寫,代碼則是: ...
  • × 目錄 [1]靜態方法 [2]構造函數 [3]實例方法 前面的話 Date對象是javascript語言中內置的數據類型,用於提供日期和時間的操作介面。Date對象是在早期java中的java.util.Date類基礎上創建的,為此,Date類型使用自UTC1970年1月1日0點開始經過的毫秒數來 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...