目錄
簡介
DATE 物件
初始化 Date 物件
時區
日期轉換和格式化
Date 物件的GETTER 方法
編輯Date 物件
取得目前的時間戳記
JavaScript 總是嘗試取得最準確的結果
依据本地情况格式化日期
两个日期的对比
首頁 web前端 js教程 js中data物件的詳細用法介紹(附程式碼)

js中data物件的詳細用法介紹(附程式碼)

Aug 13, 2018 am 11:46 AM
date javascript

這篇文章帶給大家的內容是關於js中data物件的詳細用法介紹(附程式碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

簡介

在 JavaScript 中處理日期可能會很複雜,無論開發者技術如何,往往都會感到痛苦。

js中data物件的詳細用法介紹(附程式碼)

JavaScript 透過一個強大的Date物件對我們提供了日期處理功能。

DATE 物件

Date 物件實例表示單一時間點.

儘管名為Date, 它同樣被用來處理時間。

初始化 Date 物件

我們透過下述程式碼初始化一個 Date 物件:

new Date()
登入後複製

上述程式碼建立了一個表徵當下時刻的日期物件。

在內部, 日期表示自 1970年1月1日 (UTC) 起到現在的毫秒數 。這個時間很重要, 因為就計算機而言, 這是其起始之時。

您可能熟悉 UNIX 時間戳記: 這表示自該著名日期以來過去的秒數。

注意UNIX 時間戳記以秒為單位,JavaScript 日期以毫秒為單位

#如果我們有一個UNIX 時間戳,我們可以透過下述方法初始化一個JavaScript 日期物件:

const timestamp = 1530826365
new Date(timestamp * 1000)
登入後複製

如果我們傳入的是0,我們將會得到表示Jan 1st 1970 (UTC) 這個時間點的日期。

new Date(0)
登入後複製

如果我們傳入的是字串而非數值,那麼Date 物件會使用parse 方法來判明你傳入的究竟是哪個日期,如:

new Date('2018-07-22')
new Date('2018-07') //July 1st 2018, 00:00:00
new Date('2018') //Jan 1st 2018, 00:00:00
new Date('07/22/2018')
new Date('2018/07/22')
new Date('2018/7/22')
new Date('July 22, 2018')
new Date('July 22, 2018 07:22:13')
new Date('2018-07-22 07:22:13')
new Date('2018-07-22T07:22:13')
new Date('25 March 2018')
new Date('25 Mar 2018')
new Date('25 March, 2018')
new Date('March 25, 2018')
new Date('March 25 2018')
new Date('March 2018') //Mar 1st 2018, 00:00:00
new Date('2018 March') //Mar 1st 2018, 00:00:00
new Date('2018 MARCH') //Mar 1st 2018, 00:00:00
new Date('2018 march') //Mar 1st 2018, 00:00:00
登入後複製

這裡很靈活。您可以在月份或天數內添加或省略前導零.

需要注意 月/日 的位置,否則可能會把月份解析為日期。

使用Date.parse 也可以處理字串:

Date.parse('2018-07-22')
Date.parse('2018-07') //July 1st 2018, 00:00:00
Date.parse('2018') //Jan 1st 2018, 00:00:00
Date.parse('07/22/2018')
Date.parse('2018/07/22')
Date.parse('2018/7/22')
Date.parse('July 22, 2018')
Date.parse('July 22, 2018 07:22:13')
Date.parse('2018-07-22 07:22:13')
Date.parse('2018-07-22T07:22:13')
登入後複製

Date.parse 會傳回毫秒錶示的時間戳記而非Date 對象

你也可以依照順序傳入值來表示日期的每一部分,參數順序如下:年份,月份(從0開始),日期,小時,分鐘,秒,毫秒

new Date(2018, 6, 22, 7, 22, 13, 0)
new Date(2018, 6, 22)
登入後複製

最少需要傳入三個參數,不過大多JavaScript 引擎也可以解析少於三個參數的情況

new Date(2018, 6) //Sun Jul 01 2018 00:00:00 GMT+0200 (Central European Summer Time)
new Date(2018) //Thu Jan 01 1970 01:00:02 GMT+0100 (Central European Standard Time)
登入後複製

上述程式碼的最終結果是依賴你的電腦的時區的相對值。這意味著傳入相同的參數在不同電腦上可能會有不同的結果。

JavaScript 在沒有任何有關時區的資訊的情況下, 會將日期視為 UTC, 結果會自動針對目前的電腦時區進行轉換。

總結一下,有四種方法可以讓你建立一個新的Date 物件:

  • 不傳參數,會基於目前時間建立Date 物件;

  • 傳入代表自1 Jan 1970 00:00 GMT 過去的毫秒數的數值;

  • 傳入代表日期的字串;

  • 傳入一系列分別代表各項的參數;

時區

初始化日期時, 您也可以傳入時區,此時日期不假定為UTC, 然後轉換為本地時區。

可以透過 HPURS 格式 或新增時區名稱的方式傳入時區。

new Date('July 22, 2018 07:22:13 +0700')
new Date('July 22, 2018 07:22:13 (CET)')
登入後複製

如果在解析時傳入了錯誤的時區名稱,JavaScript 就會預設使用 UTC 並不會錯誤。

如果傳入了錯誤格式的數值,JavaScript會報 Invaild Date 錯誤。

日期轉換和格式化

對於一個給定的日期對象,存在著許多方法可以基於該日期生產字串

const date = new Date('July 22, 2018 07:22:13')

date.toString() // "Sun Jul 22 2018 07:22:13 GMT+0200 (Central European Summer Time)"
date.toTimeString() //"07:22:13 GMT+0200 (Central European Summer Time)"
date.toUTCString() //"Sun, 22 Jul 2018 05:22:13 GMT"
date.toDateString() //"Sun Jul 22 2018"
date.toISOString() //"2018-07-22T05:22:13.000Z" (ISO 8601 format)
date.toLocaleString() //"22/07/2018, 07:22:13"
date.toLocaleTimeString()    //"07:22:13"
date.getTime() //1532236933000
date.getTime() //1532236933000
登入後複製

Date 物件的GETTER 方法

Date 物件提供了幾種檢查其值的方法。這些方法的結果都取決於電腦的目前時區

const date = new Date('July 22, 2018 07:22:13')

date.getDate() //22
date.getDay() //0 (0 means sunday, 1 means monday..)
date.getFullYear() //2018
date.getMonth() //6 (starts from 0)
date.getHours() //7
date.getMinutes() //22
date.getSeconds() //13
date.getMilliseconds() //0 (not specified)
date.getTime() //1532236933000
date.getTimezoneOffset() //-120 (will vary depending on where you are and when you check - this is CET during the summer). Returns the timezone difference expressed in minutes
登入後複製

上述方法存在對應的獲取UTC 時間的版本:

date.getUTCDate() //22
date.getUTCDay() //0 (0 means sunday, 1 means monday..)
date.getUTCFullYear() //2018
date.getUTCMonth() //6 (starts from 0)
date.getUTCHours() //5 (not 7 like above)
date.getUTCMinutes() //22
date.getUTCSeconds() //13
date.getUTCMilliseconds() //0 (not specified)
登入後複製

編輯Date 物件

Date 物件提供了若干編輯日期值得方法

const date = new Date('July 22, 2018 07:22:13')

date.setDate(newValue)
date.setDay(newValue)
date.setFullYear(newValue) //note: avoid setYear(), it's deprecated
date.setMonth(newValue)
date.setHours(newValue)
date.setMinutes(newValue)
date.setSeconds(newValue)
date.setMilliseconds(newValue)
date.setTime(newValue)
date.setTimezoneOffset(newValue)
登入後複製
setDaysetMonth 都從數值0 開始處理,例如三月應該為數值2

這裡有一個冷知識: 這些方法會「重疊」, 所以比如說如果你使用了date.setHours (48), 結果會影響到天。

還有一個冷知識,你可以為setHours() 方法傳入多個參數,用以設定分鐘,秒,毫秒,如setHours(0, 0, 0, 0), setMinutessetSeconds 存在類似的情況。

類似於眾多取得日期的方法一樣,設定日期的方法也存在對於的UTC 版本:

const date = new Date('July 22, 2018 07:22:13')

date.setUTCDate(newalue)
date.setUTCDay(newValue)
date.setUTCFullYear(newValue)
date.setUTCMonth(newValue)
date.setUTCHours(newValue)
date.setUTCMinutes(newValue)
date.setUTCSeconds(newValue)
date.setUTCMilliseconds(newValue)
登入後複製

取得目前的時間戳記

如果你想取得以毫秒為單位的目前時間戳,建議使用下述方法:

Date.now()
登入後複製

而不是

new Date().getTime()
登入後複製

JavaScript 總是嘗試取得最準確的結果

上面已經提到過,你傳入的天數會影響到總的日期,這不會報錯,會直接更新月份

new Date(2018, 6, 40) //Thu Aug 09 2018 00:00:00 GMT+0200 (Central European Summer Time)
登入後複製

上述現像在日期,小時,分鐘,秒以及毫秒同樣生效

依据本地情况格式化日期

Internationalization API 在现代浏览器中有很好的支持(除了 UC浏览器),允许你转换日期。

本地化方法通过,通过 Int1 对象暴露,这个对象还可以用来帮助本地化数值,字符串以及货币。

这里我们用到的是 Intl.DateTimeFormat()

我们可以通过下述方法来依据电脑的本地情况格式化一个日期:

const date = new Date('July 22, 2018 07:22:13')
new Intl.DateTimeFormat().format(date) //"22/07/2018" in my locale
登入後複製

也可以依据不同的时区格式化日期:

new Intl.DateTimeFormat('en-US').format(date) //"7/22/2018"
登入後複製

Intl.DateTimeFormat 方法还接收一个可选的参数用以自定义输出格式,可以用来展示 小时,分钟和秒

const options = {
  year: 'numeric',
  month: 'numeric',
  day: 'numeric',
  hour: 'numeric',
  minute: 'numeric',
  second: 'numeric'
}

new Intl.DateTimeFormat('en-US', options).format(date) //"7/22/2018, 7:22:13 AM"
new Intl.DateTimeFormat('it-IT', options2).format(date) //"22/7/2018, 07:22:13"
登入後複製

点击这个链接可以查看所有可以用到的属性

两个日期的对比

可以通过 Date.getTime() 获取两个日期之间的差别

const date1 = new Date('July 10, 2018 07:22:13')
const date2 = new Date('July 22, 2018 07:22:13')
const diff = date2.getTime() - date1.getTime() //difference in milliseconds
登入後複製

同样也可以通过这个方法检测两个日期是否相同:

const date2 = new Date('July 10, 2018 07:22:13')
if (date2.getTime() === date1.getTime()) {
  //dates are equal
}
登入後複製

需要注意的是,getTime() 方法比较的是毫秒,所以 July 10, 2018 07:22:13July 10, 2018 并不相等。不过你可以通过 setHours(0, 0, 0, 0) 来重置时间。

相关推荐:

js data日期初始化的5种方法_javascript技巧

javascript-问:php使用post方式提交data,进行js加密,然后显示出来

以上是js中data物件的詳細用法介紹(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何使用WebSocket和JavaScript實現線上語音辨識系統 如何使用WebSocket和JavaScript實現線上語音辨識系統 Dec 17, 2023 pm 02:54 PM

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術 WebSocket與JavaScript:實現即時監控系統的關鍵技術 Dec 17, 2023 pm 05:30 PM

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統 如何利用JavaScript和WebSocket實現即時線上點餐系統 Dec 17, 2023 pm 12:09 PM

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統 如何使用WebSocket和JavaScript實現線上預約系統 Dec 17, 2023 am 09:39 AM

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript與WebSocket:打造高效率的即時天氣預報系統 JavaScript與WebSocket:打造高效率的即時天氣預報系統 Dec 17, 2023 pm 05:13 PM

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

javascript如何使用insertBefore javascript如何使用insertBefore Nov 24, 2023 am 11:56 AM

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。

JavaScript與WebSocket:打造高效率的即時影像處理系統 JavaScript與WebSocket:打造高效率的即時影像處理系統 Dec 17, 2023 am 08:41 AM

JavaScript是一種廣泛應用於Web開發的程式語言,而WebSocket則是一種用於即時通訊的網路協定。結合二者的強大功能,我們可以打造一個高效率的即時影像處理系統。本文將介紹如何利用JavaScript和WebSocket來實作這個系統,並提供具體的程式碼範例。首先,我們需要明確指出即時影像處理系統的需求和目標。假設我們有一個攝影機設備,可以擷取即時的影像數

See all articles