javascript
Dreamwear如何创建javascript_JavaScript还可以处理日期?你只需要这样做
與日期相關的問題與JavaScript一樣古老。從理論上講,如果不是因為API的許多弱點,可以使用JavaScript的date對象執行日期計算。幸運的是,有一些有用的庫可以為我們節省很多工作。其中之一是date-fns。
一個問題,例如,是與日期對象不同的時區的處理,由于JavaScript使用當前系統時區為基礎。這可能會導致困難,尤其是涉及跨多個時區的應用程序時。月份的表示形式是JavaScript中date對象的另一特性。例如,一月的值指定為0。但是,當涉及到日期和年份時,JavaScript會再次遵循預期的標準,因此,5 號用數字5表示。
當您實現一個使用日期值的應用程序時,您經常會發現必須創建,修改和輸出它們的問題。使用機載JavaScript工具,可以輕松進行創建和輸出。但是,如果日期被修改,例如,如果你想從一個日期減去兩天了,這是不再可能。當然,您可以獲取日期的時間戳,然后減去相應的毫秒數以達到目標日期。該解決方案不容易閱讀和維護,或者特別優雅。由于這個問題,還有更多的問題,過去已經創建了許多庫,以使您更輕松地處理JavaScript中的日期值。市場上最廣泛的解決方案之一是Moment.js。不過,前一陣子已經成為了一個嚴重的競爭對手:
date-fns與Moment.js有何不同?
最重要的區別之一是項目名稱,因為fns代表功能。日期FNS的功能,它允許您使用日期值的集合。
與此相反,Moment.js具有面向對象的方法。在這里,您創建一個瞬間 -instance和工作與此對象的方法。當然,這會影響包裝尺寸。
Moment.js默認包含整個界面。您確實可以優化程序包,但這需要其他步驟。在date-fns中,您僅加載真正需要的功能。
不過,在帶有Node.js的后端應用程序中,這無關緊要,因為軟件包大小是一個小問題。您可以使用日期FNS就像Moment.js,在前端的瀏覽器。包裝的大小在這里起決定性作用。
date-fns的開發人員不僅確保將項目劃分為許多小的且很大程度上獨立的功能,而且還確保這些功能是純功能。例如,您傳遞一個日期對象和要添加到addHours函數的小時數。結果,您將獲得一個新的日期對象,其中指定的小時數晚于您輸入的日期。因此,沒有副作用,例如直接修改輸入。
如何安裝日期FNS?
與大多數其他JavaScript庫一樣,date-fns可作為npm軟件包提供,并可通過npm進行安裝。在項目中使用命令npm install date-fns進行操作。該軟件包將作為依賴項自動添加到您的package.json文件中。同樣,您可以將紗線與紗線 添加日期-fns命令一起使用。
如何使用它?
您可以使用日期FNS包與CommonJS的模塊系統都和也與ES模塊。在下面的示例中,您使用格式函數輸出當前日期。清單1顯示了如何使用CommonJS模塊系統。
清單1:通過CommonJS模塊化系統集成date-fns
1個
2
3
4
5
const { format } = require('date-fns');
const date = new Date();
console.log(`Heute ist der: ${format(date, 'DD.MM.YYYY')}`);
Node.js的較新版本還支持關鍵字的進口和出口,以進口和出口分別模塊。此時,您可以導入整個date-fns軟件包并訪問所需的功能,也可以利用每個功能在單獨的文件中可用的事實,因此可以單獨導入格式功能。你可以看到這是如何工作清單2所示。
清單2:將date-fns與ES模塊一起使用
1個
2
3
import { format } from 'date-fns/format';
const date = new Date();
console.log(`Heute ist der: ${format(date, 'DD.MM.YYYY')}`);
格式化日期值
使用格式,您已經學習了格式化日期值的最重要功能。
您可以使用格式字符串來指定要格式化日期的哪一部分以及如何格式化。
您可以在https://date-fns.org/docs/format中找到可以在格式字符串中使用的各個令牌的全面參考。
除此功能外,您還可以訪問其他輔助功能,例如distanceInWords函數,該函數以可讀形式輸出兩個日期值之間的差。
日期算術
已經提到的JavaScript中對象日期的漏洞是缺少對日期算術的支持。因此,事不宜遲地執行加法或減法。
date-fns為此提供了許多輔助功能。這些功能通常有一個統一的命名方案:首先,你指定的操作,其次是要與工作單位。
這將導致函數名稱,例如addMinutes或subYears。此類別的所有函數都將日期對象作為第一個參數,將數字作為第二個參數表示要添加或減去的單位數。例如,在一個小時的四分之三添加到當前為止,你可以從清單3使用的代碼。
清單3:使用date-fns的日期算術
1個
2
3
4
5
const { addMinutes, addHours, format } = require('date-fns');
const date = addMinutes(addHours(new Date(), 1), 45);
console.log(format(date, 'DD.MM.YYYY HH:mm'));
比較
日期FNS的比較功能也非常有幫助,在他們的幫助,你可以決定是否一個謊言日期之前或之后另一個,還是在某個日期在于未來或過去。清單4使用isAfter和isFuture函數作為示例來說明它們的用法。
清單4:wit dat-fns的比較
1個
2
3
4
5
6
const { isAfter, isFuture, addHours } = require('date-fns');
const date1 = new Date();
const date2 = addHours(new Date(), 5);
console.log(`Date1 is ${isAfter(date1, date2) ? 'after' : 'before'} Date2`);
console.log(`Date2 is ${isFuture(date2) ? 'not' : ''} in the past`);
進一步的操作
該日期FNS包為您提供不僅是簡單的操作,如加,但也更復雜的操作,如areRangesOverlapping功能,你可以用它來確定兩個時間跨度是否重疊。
隨著最小和最大的功能,你可以找到一系列的日期值的最早或最晚日期。
借助compareAsc和compareDsc函數,您還可以對具有日期值的數組進行排序。該函數作為比較函數傳遞給數組的sort方法。清單5是這樣的一個例子。
清單5:對日期值進行排序
1個
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const { compareAsc } = require('date-fns');
const sortedDates = [
new Date(2001, 1, 1),
new Date(2003, 3, 3),
new Date(2002, 2, 2),
].sort(compareAsc);
console.log(sortedDates);
結論
Moment.js或date-fns之類的許多程序包都提供了,您也可以使用本機JavaScript來實現。但是,在這些情況下,源代碼的可讀性受到很大影響。除了更正JavaScript 日期對象的特性之外,這是支持使用這些庫的最重要的論據之一。
這里顯示的日期FNS的可能性僅代表庫中的一小部分,并只給你這個庫的功能范圍的味道。有了眾多擴展,并為應用程序的國際化提供了很好的支持,您下次確定一個應用程序的日期庫時,至少應將date-fns入圍。
最后,開發這么多年我也總結了一套學習Java的資料與面試題,如果你在技術上面想提升自己的話,可以關注我,私信發送領取資料或者在評論區留下自己的聯系方式,有時間記得幫我點下轉發讓跟多的人看到哦。
總結
以上是生活随笔為你收集整理的Dreamwear如何创建javascript_JavaScript还可以处理日期?你只需要这样做的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python怎么用pip_python怎
- 下一篇: python爬虫提取a标签_Python