亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
安裝 date-fns
格式化日期
解析日期
添加和減去日期
查找日期之間的差異
使用時(shí)區(qū)
處理無(wú)效日期
結(jié)論
首頁(yè) CMS教程 &#&按 使用 date-fns 簡(jiǎn)化日期操作

使用 date-fns 簡(jiǎn)化日期操作

Sep 03, 2023 am 10:29 AM

使用 date-fns 簡(jiǎn)化日期操作

日期運(yùn)算是 JavaScript 中的常見任務(wù),原生 Date 物件提供了一些基本功能。但是,處理日期可能很複雜且容易出錯(cuò),且 Date 缺乏執(zhí)行這些常見任務(wù)所需的功能。為了使日期處理變得更容易、更可靠,開發(fā)人員必須依賴第三方程式庫(kù)。 JavaScript 生態(tài)系統(tǒng)中有很多可用的,但 date-fns 脫穎而出,成為事實(shí)上的標(biāo)準(zhǔn)。它是一個(gè)用於解析、格式化和操作日期的輕量級(jí)實(shí)用程式庫(kù)。

在本教程中,我們將探索使用 date-fns 的基礎(chǔ)知識(shí),並涵蓋處理日期的最常用函數(shù)。最後,您將深入了解如何將 date-fns 合併到 JavaScript 專案中以有效處理日期。

安裝 date-fns

date-fns 是一個(gè) Node 套件。因此,如果您使用 NPM、Babel 或 Webpack 等工具堆疊,則可以使用下列 npm 命令安裝 date-fns:

npm install date-fns --save

如果您對(duì)其中任何一個(gè)感到陌生,請(qǐng)不要擔(dān)心;您也可以在瀏覽器中使用 date-fns!只需將以下 <script/> 元素新增到您的 HTML 中即可:

<script type="module">
    import * as dateFns from 'https://cdn.jsdelivr.net/npm/date-fns/+esm';
</script>

這是一個(gè) JavaScript 模組,從 jsdelivr 網(wǎng)路匯入最新版本的 date-fns 函式庫(kù)。透過此導(dǎo)入,所有 date-fns 函數(shù)和實(shí)用程式都可以透過 dateFns 物件存取。請(qǐng)注意,要成功運(yùn)行本教程中的所有程式碼,程式碼必須包含在導(dǎo)入 date-fns 的相同模組中。

格式化日期

處理日期時(shí)的主要任務(wù)之一是將其格式化為人類可讀的字串。 JavaScript 的 Date 物件對(duì)格式化日期有基本支持,但缺乏對(duì)自訂格式的支援。 date-fns 為此提供了格式化函數(shù)。

const today = new Date();
const formattedDate1 = dateFns.format(today, 'dd MMMM yyyy');
console.log(formattedDate1); // Output: "29 July 2023"

const formattedDate2 = dateFns.format(today, 'yyyy-MM-dd');
console.log(formattedDate2); // Output: 2023-07-29

在此範(fàn)例中,我們建立一個(gè)新的 Date 對(duì)象,表示目前日期。然後,我們使用 format() 函數(shù)根據(jù)提供的格式字串格式化日期。格式字串使用佔(zhàn)位符,例如 dd 表示兩位數(shù)的日期,MMMM 表示完整的月份名稱,yyyy 表示全年。

第二次呼叫 format() 使用 yyyy-MM-dd 格式。 MM 佔(zhàn)位符指的是兩位數(shù)月份。

format() 函數(shù)也可以輕鬆格式化時(shí)間。使用hhh 佔(zhàn)位符輸出一位或兩位數(shù)的小時(shí),mm 輸出兩位數(shù)的分鐘,a 輸出AM/PM 指示器。例如:

const formattedDateAndTime = dateFns.format(today, 'yyyy-MM-dd h:mm a');
console.log(formattedDateAndTime); // Output: 2023-07-29 12:50 PM

您可以使用許多佔(zhàn)位符來(lái)設(shè)定日期和時(shí)間的格式。下表列出了一些內(nèi)容,但請(qǐng)務(wù)必訪問文件以獲取完整清單。

單位 佔(zhàn)位符 結(jié)果範(fàn)例
日曆年(2 位數(shù)字) 23
日曆年(4 位數(shù)字) 2023
月份(1 位數(shù)) 中號(hào) 7
月份(2 位數(shù)) 毫米 07
月份(簡(jiǎn)稱) MMM 一月、二月、十二月
月份(全名) MMMM 一月、二月
一月中的某天(1 位數(shù)字) d 5, 23
月份中的日期(2 位數(shù)字) dd 05, 23
星期幾(縮短) E 週一、週二、週三
星期幾(全名) EEEE 週一、週二
上午、下午 一個(gè) 上午、下午
小時(shí)(12 小時(shí)制,1 位數(shù)) 小時(shí) 1,2,10
小時(shí)(12 小時(shí)制,2 位數(shù)) 呵呵 01,02,10
小時(shí)(24 小時(shí)制,1 位數(shù)) 小時(shí) 1、2、10、23
小時(shí)(24 小時(shí)制,2 位數(shù)) 呵呵 01,02,10,23
分鐘(1 位數(shù)字) 中號(hào) 1、2、3、25、30、58
分鐘(2 位數(shù)字) 毫米 01,02,03,24,56
第二位(1 位數(shù)字) s 1、2、3、10、58
第二個(gè)(2 位數(shù)字) SS 01,02,10,45

解析日期

在處理用戶輸入或來(lái)自外部源的數(shù)據(jù)時(shí),我們通常需要解析字符串中的日期。 date-fns 為此提供了 parse() 函數(shù)。

const dateString = '2023-07-15';
const parsedDate = dateFns.parse(dateString, 'yyyy-MM-dd', new Date());
console.log(parsedDate); // Output: Date object representing July 15, 2023

在此代碼中,我們使用格式 yyyy-MM-dd 解析來(lái)自 dateString 的日期,該格式對(duì)應(yīng)于提供的日期字符串。第三個(gè)參數(shù)是用于計(jì)算解析日期的基準(zhǔn)日期。在本例中,我們使用當(dāng)前日期作為基準(zhǔn)。

添加和減去日期

通過添加或減去時(shí)間間隔來(lái)操作日期是日期處理中的常見要求。 date-fns 提供了一組方便的函數(shù)來(lái)輕松執(zhí)行這些操作。

以下示例演示了 addDays()subDays() 函數(shù):

const startDate = new Date(2023, 6, 15); // July 15, 2023

const fiveDaysLater = dateFns.addDays(startDate, 5);
console.log(fiveDaysLater); // Output: Date object representing July 20, 2023

const threeDaysAgo = dateFns.subDays(startDate, 3);
console.log(threeDaysAgo); // Output: Date object representing July 12, 2023

在此示例中,我們從給定的 2023 年 7 月 15 日的 startDate 開始。然后使用 addDays() 函數(shù)計(jì)算 5 天后的日期,并使用 subDays( ) 函數(shù)查找 3 天前的日期。

除了添加和減去天數(shù)之外,date-fns 還提供了添加和減去月份和年份的函數(shù)。正如您所期望的,它們被命名為 addMonths()、subMonths()、addYears()subYears()

操作日期時(shí),必須注意邊緣情況。例如,當(dāng)減去月份或年份時(shí),結(jié)果日期可能不存在(例如 2 月 30 日),而 date-fns 通過調(diào)整日期來(lái)智能處理這種情況。

const startDate = new Date(2023, 0, 31); // January 31, 2023

const oneMonthLater = dateFns.addMonths(startDate, 1);
console.log(oneMonthLater); // Output: Date object representing February 28, 2023

在此示例中,從 2023 年 1 月 31 日開始,添加一個(gè)月結(jié)果為 2023 年 2 月 28 日,因?yàn)?2 月沒有第 31 天。

查找日期之間的差異

JavaScript 的 Date 對(duì)象完全缺乏查找兩個(gè) Date 對(duì)象之間差異的能力。值得慶幸的是,date-fns 有幾個(gè)函數(shù)可以用來(lái)查找兩個(gè) Dates 之間的差異。其中一些是:

函數(shù)名稱 目的
differenceInMilliseconds() 獲取給定日期之間的毫秒數(shù)。
differenceInSeconds() 獲取給定日期之間的秒數(shù)。
differenceInMinutes() 獲取給定日期之間的分鐘數(shù)。
differenceInHours() 獲取給定日期之間的小時(shí)數(shù)。
differenceInBusinessDays() 獲取給定日期之間的工作日數(shù)。
differenceInDays() 獲取給定日期之間的完整天數(shù)。
differenceInMonths() 獲取給定日期之間的月數(shù)。
differenceInYears() 獲取給定日期之間的年數(shù)。

還有許多其他“差異”函數(shù),因此請(qǐng)務(wù)必檢查文檔。

考慮以下示例:

const startDate = new Date(2023, 6, 15); // July 15, 2023
const endDate = new Date(2023, 6, 22);   // July 22, 2023

const daysDifference = dateFns.differenceInDays(endDate, startDate);
console.log(daysDifference); // Output: 7

在本例中,我們使用 differenceInDays() 函數(shù)來(lái)計(jì)算 startDateendDate。輸出為 7。

使用時(shí)區(qū)

使用時(shí)區(qū)可能是使用日期和時(shí)間時(shí)最令人沮喪的方面之一,但 date-fns 使用 utcToZonedTime()formatDistanceToNow() 等函數(shù)使之變得更容易??紤]以下示例:

const utcDate = new Date(Date.UTC(2023, 6, 15, 12, 0, 0));
const timezone = 'America/New_York';

const zonedDate = dateFns.utcToZonedTime(utcDate, timezone);
console.log(dateFns.formatDistanceToNow(zonedDate)); // Output: "6 months"

在此示例中,我們使用 utcToZonedTime() 函數(shù)將 utcDate 轉(zhuǎn)換為 America/New_York 時(shí)區(qū)。然后我們使用 formatDistanceToNow() 函數(shù)來(lái)獲取分區(qū)日期和當(dāng)前時(shí)間之間的時(shí)差。

處理無(wú)效日期

我們永遠(yuǎn)不能信任來(lái)自用戶的數(shù)據(jù),并且通常最好不要信任任何您無(wú)法控制的數(shù)據(jù)。因此,我們需要能夠檢查 Date 是否有效,并且 date-fns 為此提供了 isValid() 函數(shù)。例如:

const validDate = new Date(2023, 1, 30); // February 30, 2023 is not a valid date
const invalidDate = new Date(NaN);      // Invalid date

console.log(dateFns.isValid(validDate));   // Output: true
console.log(dateFns.isValid(invalidDate)); // Output: false

此示例創(chuàng)建了有效和無(wú)效的 Date 對(duì)象。然后我們使用 isValid() 函數(shù)來(lái)確定它們是否是有效日期。

結(jié)論

date-fns 是一個(gè)功能強(qiáng)大且易于使用的庫(kù),可以在 JavaScript 中處理日期時(shí)為您節(jié)省大量時(shí)間和精力。本教程僅觸及該庫(kù)功能的表面,因此請(qǐng)務(wù)必通過查看官方文檔來(lái)探索其功能和可用選項(xiàng)。

以上是使用 date-fns 簡(jiǎn)化日期操作的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
如何診斷WordPress引起的高CPU使用 如何診斷WordPress引起的高CPU使用 Jul 06, 2025 am 12:08 AM

WordPress導(dǎo)致服務(wù)器CPU使用率飆升的主要原因包括插件問題、數(shù)據(jù)庫(kù)查詢效率低、主題代碼質(zhì)量差或流量激增。 1.首先通過top、htop或控制面板工具確認(rèn)是否為WordPress引起的高負(fù)載;2.進(jìn)入故障排查模式逐步啟用插件排查性能瓶頸,使用QueryMonitor分析插件執(zhí)行情況並刪除或替換低效插件;3.安裝緩存插件、清理冗餘數(shù)據(jù)、分析慢查詢?nèi)照I以優(yōu)化數(shù)據(jù)庫(kù);4.檢查主題是否存在過度加載內(nèi)容、複雜查詢或缺乏緩存機(jī)制等問題,建議用標(biāo)準(zhǔn)主題測(cè)試對(duì)比並優(yōu)化代碼邏輯。按照上述步驟逐一排查可定位並解

如何在WordPress中縮小JavaScript文件 如何在WordPress中縮小JavaScript文件 Jul 07, 2025 am 01:11 AM

MinifyingJavaScript文件可通過刪除空白、註釋和無(wú)用代碼來(lái)提升WordPress網(wǎng)站加載速度。 1.使用支持合併壓縮的緩存插件如W3TotalCache,在“Minify”選項(xiàng)中啟用並選擇壓縮模式;2.使用專用壓縮插件如FastVelocityMinify,提供更精細(xì)控制;3.手動(dòng)壓縮JS文件並通過FTP上傳,適用於熟悉開發(fā)工具的用戶。注意部分主題或插件腳本可能與壓縮功能衝突,啟用後需徹底測(cè)試網(wǎng)站功能。

如何以編程方式防止評(píng)論垃圾郵件 如何以編程方式防止評(píng)論垃圾郵件 Jul 08, 2025 am 12:04 AM

防止評(píng)論垃圾信息最有效的方式是通過程序化手段自動(dòng)識(shí)別並攔截。 1.使用驗(yàn)證碼機(jī)制(如GooglereCAPTCHA或hCaptcha)可有效區(qū)分人類與機(jī)器人,尤其適合公眾網(wǎng)站;2.設(shè)置隱藏字段(Honeypot技術(shù)),利用機(jī)器人自動(dòng)填寫特性識(shí)別垃圾評(píng)論,不影響用戶體驗(yàn);3.檢查評(píng)論內(nèi)容關(guān)鍵詞黑名單,通過敏感詞匹配過濾垃圾信息,需注意避免誤判;4.判斷評(píng)論頻率與來(lái)源IP,限制單位時(shí)間內(nèi)的提交次數(shù)並建立黑名單;5.使用第三方反垃圾服務(wù)(如Akismet、Cloudflare)提升識(shí)別準(zhǔn)確性??筛鶕?jù)網(wǎng)站

如何爭(zhēng)取古騰堡大塊的資產(chǎn) 如何爭(zhēng)取古騰堡大塊的資產(chǎn) Jul 09, 2025 am 12:14 AM

在開發(fā)Gutenberg塊時(shí),正確enqueue資產(chǎn)的方法包括:1.使用register_block_type指定editor_script、editor_style和style的路徑;2.在functions.php或插件中通過wp_register_script和wp_register_style註冊(cè)資源,並設(shè)置正確的依賴和版本;3.配置構(gòu)建工具輸出合適的模塊格式,並確保路徑一致;4.通過add_theme_support或enqueue_block_assets控制前端樣式的加載邏輯,確保

如何向用戶添加自定義字段 如何向用戶添加自定義字段 Jul 06, 2025 am 12:18 AM

要添加自定義用戶字段需根據(jù)平臺(tái)選擇擴(kuò)展方式並註意數(shù)據(jù)驗(yàn)證與權(quán)限控制。常見做法包括:1.利用數(shù)據(jù)庫(kù)額外表或鍵值對(duì)結(jié)構(gòu)存儲(chǔ)信息;2.在前端加入輸入框並與後端集成;3.對(duì)敏感數(shù)據(jù)進(jìn)行格式校驗(yàn)和訪問權(quán)限限制;4.更新接口及模板以支持新字段展示與編輯,同時(shí)兼顧移動(dòng)端適配和用戶體驗(yàn)。

如何添加自定義重寫規(guī)則 如何添加自定義重寫規(guī)則 Jul 08, 2025 am 12:11 AM

在WordPress中添加自定義重寫規(guī)則的關(guān)鍵在於使用add_rewrite_rule函數(shù)並確保規(guī)則正確生效。 1.使用add_rewrite_rule註冊(cè)規(guī)則,格式為add_rewrite_rule($regex,$redirect,$after),其中$regex是正則表達(dá)式匹配URL,$redirect指定實(shí)際查詢,$after控制規(guī)則位置;2.需通過add_filter添加自定義查詢變量;3.修改後必須刷新固定鏈接設(shè)置;4.建議將規(guī)則放在'top'以避免衝突;5.可藉助插件查看當(dāng)前規(guī)則便於

如何優(yōu)化WordPress機(jī)器人TXT 如何優(yōu)化WordPress機(jī)器人TXT Jul 13, 2025 am 12:37 AM

robots.txt對(duì)WordPress網(wǎng)站的SEO至關(guān)重要,能引導(dǎo)搜索引擎抓取行為,避免重複內(nèi)容並提升效率。 1.屏蔽如/wp-admin/、/wp-includes/等系統(tǒng)路徑,但避免誤封/uploads/目錄;2.添加Sitemap路徑如Sitemap:https://yourdomain.com/sitemap.xml以幫助搜索引擎快速發(fā)現(xiàn)站點(diǎn)地圖;3.限制/page/和帶參數(shù)的URL以減少爬蟲浪費(fèi),但需注意勿封重要?dú)w檔頁(yè);4.避免常見錯(cuò)誤如誤封全站、緩存插件影響更新及忽略移動(dòng)端與子域名配

如何介紹WordPress性能 如何介紹WordPress性能 Jul 07, 2025 am 12:43 AM

1.使用性能分析插件可快速定位問題,如QueryMonitor可查看數(shù)據(jù)庫(kù)查詢次數(shù)與PHP錯(cuò)誤,BlackboxProfiler生成函數(shù)執(zhí)行報(bào)告,NewRelic提供服務(wù)器級(jí)分析;2.分析PHP執(zhí)行性能需檢查耗時(shí)函數(shù)、調(diào)試工具使用及內(nèi)存分配情況,如Xdebug生成火焰圖輔助優(yōu)化;3.監(jiān)控?cái)?shù)據(jù)庫(kù)查詢效率可通過慢查詢?nèi)照I與索引檢查,QueryMonitor能列出所有SQL並按時(shí)間排序;4.結(jié)合GooglePageSpeedInsights、GTmetrix與WebPageTest等外部工具評(píng)估前端加

See all articles