整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Chrono.js:Javascript 中的日期 NLP 庫

          家好,很高興又見面了,我是"高級前端?進階?",由我帶著大家一起關注前端前沿、深入前端底層技術,大家一起進步,也歡迎大家關注、點贊、收藏、轉發,您的支持是我不斷創作的動力。

          什么是 Chrono (v2)

          Chrono 是 Javascript 中的自然語言日期解析器,它旨在處理大多數日期/時間格式并從任何給定文本中提取信息,內容包括:

          • 今天、明天、昨天、上周五等
          • 2013 年 8 月 17 日 - 2013 年 8 月 19 日
          • 本周五 13:00 - 16:00
          • 5 天前
          • 2 周后
          • 2013 年 8 月 17 日星期六 18:40:39 GMT+0900 (JST)
          • 2014-11-30T08:15:30-05:30

          目前 Chrono 在 Github 上通過 MIT 協議開源,有超過 3.5k 的 star,值得嘗試。

          如何使用 Chrono (v2)

          基礎使用

          首先需要通過 NPM 安裝:

          npm install --save chrono-node

          然后直接在代碼中引入即可:

          import * as chrono from 'chrono-node';
          
          chrono.parseDate('An appointment on Sep 12-13');

          如果是 Node.js 環境,可以使用下面的代碼:

          const chrono = require('chrono-node');
          
          // or `import chrono from 'chrono-node'` for ECMAScript

          對于 Chrono 庫來說,只需將字符串傳遞給函數 chrono.parseDate 或 chrono.parse 即可。

          import * as chrono from 'chrono-node';
          
          chrono.parseDate('An appointment on Sep 12-13');
          // Fri Sep 12 2014 12:00:00 GMT-0500 (CDT)
          
          chrono.parse('An appointment on Sep 12-13');
          /* [{ 
              index: 18,
              text: 'Sep 12-13',
              start: ...
          }] */

          解析參考(日期/時區)

          今天的“星期五”與上個月的“星期五”不同,引用日期的含義取決于它們被提及的時間和地點。 Chrono 允許開發者將引用定義為 Date 或 ParsingReference 對象:

          // (Note: the exmaples run on JST timezone)
          chrono.parseDate('Friday', new Date(2012, 8 - 1, 23));
          // Fri Aug 24 2012 12:00:00 GMT+0900 (JST)
          
          chrono.parseDate('Friday', new Date(2012, 8 - 1, 1));
          // Fri Aug 03 2012 12:00:00 GMT+0900 (JST)
          
          chrono.parseDate('Friday at 4pm', {
            // Wed Jun 09 2021 21:00:00 GMT+0900 (JST)
            // = Wed Jun 09 2021 07:00:00 GMT-0500 (CDT)
            instant: new Date(1623240000000),
            timezone: 'CDT',
          });
          // Sat Jun 12 2021 06:00:00 GMT+0900 (JST)
          // = Fri Jun 11 2021 16:00:00 GMT-0500 (CDT)

          解析配置

          forwardDate(布爾值)假設結果應該在參考日期之后發生。

          const referenceDate = new Date(2012, 7, 25);
          // Sat Aug 25 2012 00:00:00 GMT+0900 -- The reference date was Saturday
          
          chrono.parseDate('Friday', referenceDate);
          // Fri Aug 24 2012 12:00:00 GMT+0900 (JST) -- The day before was Friday
          
          chrono.parseDate('Friday', referenceDate, { forwardDate: true });
          // Fri Aug 31 2012 12:00:00 GMT+0900 (JST) -- The following Friday

          timezones 覆蓋或添加時區縮寫和偏移量之間的自定義映射。 當希望 Chrono 將某些文本解析為給定的時區偏移量時,請使用此選項。 Chrono 支持明確的(正常)時區映射和模糊映射,其中夏令時期間和之外的偏移量不同。

          // Chrono doesn't understand XYZ, so no timezone is parsed
          chrono.parse('at 10:00 XYZ', new Date(2023, 3, 20))
          // "knownValues": {"hour": 10, "minute": 0}
          
          // Make Chrono parse XYZ as offset GMT-0300 (180 minutes)
          chrono.parse('at 10:00 XYZ', new Date(2023, 3, 20), { timezones: { XYZ: -180 } })
          // "knownValues": {"hour": 10, "minute": 0, "timezoneOffset": -180}
          
          // Make Chrono parse XYZ as offset GMT-0300 outside of DST, and GMT-0200 during DST. Assume DST is between 
          import { getLastDayOfMonthTransition } from "timezone";
          import { Weekday, Month } from "parsing";
          
          const parseXYZAsAmbiguousTz = {
            timezoneOffsetDuringDst: -120,
            timezoneOffsetNonDst: -180,
            dstStart: (year: number) => getLastWeekdayOfMonth(year, Month.FEBRUARY, Weekday.SUNDAY, 2),
            dstEnd: (year: number) => getLastWeekdayOfMonth(year, Month.SEPTEMBER, Weekday.SUNDAY, 3)
          };
          // Parsing a date which falls within DST
          chrono.parse('Jan 1st 2023 at 10:00 XYZ', new Date(2023, 3, 20), { timezones: { XYZ: parseXYZAsAmbiguousTz } })
          // "knownValues": {"month": 1, ..., "timezoneOffset": -180}
          
          // Parsing a non-DST date
          chrono.parse('Jun 1st 2023 at 10:00 XYZ', new Date(2023, 3, 20), { timezones: { XYZ: parseXYZAsAmbiguousTz } })
          // "knownValues": {"month": 6, ..., "timezoneOffset": -120}

          參考資料

          https://github.com/wanasit/chrono

          https://dexlock.com/blog/a-dive-into-nlp-date-parsers/

          在前端開發中,多多少少有項目需要 jQuery日期選擇/日歷的插件,以下就為大家整理出一些 jQuery日期/日歷,希望對大家有所幫助!還有更好用的,也不否在下方留言,分享大家。PS:(標題博眼球的,知道大家都知道這些的。呵呵呵)

          1.jQuery日歷插件 jQuery Week Calendar (是一個 jQuery 的按周顯示的日歷插件,能夠在周日歷網格中顯示事件)

          Web開發中,經常需要獲取當前的日期和時間,以便于在頁面中顯示或進行相應的操作。JavaScript提供了一些內置的方法,可以方便地獲取當前的日期和時間。

          獲取當前日期

          要獲取當前的日期,我們可以使用Date對象的getDate()、getMonth()和getFullYear()方法。具體步驟如下:

          • 創建一個Date對象,沒有傳入任何參數,即默認為當前時間。
          • 使用getDate()方法獲取當前的日期。
          • 使用getMonth()方法獲取當前的月份,注意月份是從0開始計數的,所以需要加1。
          • 使用getFullYear()方法獲取當前的年份。

          下面是一個示例代碼:

          var now = new Date();
          var day = now.getDate();
          var month = now.getMonth() + 1;
          var year = now.getFullYear();
          console.log("當前日期為:" + year + "-" + month + "-" + day);

          運行上述代碼,控制臺將輸出當前日期,例如:當前日期為:2023-10-31。

          獲取當前時間

          要獲取當前的時間,我們可以使用Date對象的getHours()、getMinutes()和getSeconds()方法。具體步驟如下:

          • 創建一個Date對象,沒有傳入任何參數,即默認為當前時間。
          • 使用getHours()方法獲取當前的小時數。
          • 使用getMinutes()方法獲取當前的分鐘數。
          • 使用getSeconds()方法獲取當前的秒數。

          下面是一個示例代碼:

          var now = new Date();
          var hours = now.getHours();
          var minutes = now.getMinutes();
          var seconds = now.getSeconds();
          console.log("當前時間為:" + hours + ":" + minutes + ":" + seconds);

          運行上述代碼,控制臺將輸出當前時間,例如:當前時間為:13:24:21。

          獲取當前日期和時間

          如果需要同時獲取當前的日期和時間,可以將上述兩個步驟合并。具體步驟如下:

          創建一個Date對象,沒有傳入任何參數,即默認為當前時間。

          下面是一個示例代碼:

          var now = new Date();
          var day = now.getDate();
          var month = now.getMonth() + 1;
          var year = now.getFullYear();
          var hours = now.getHours();
          var minutes = now.getMinutes();
          var seconds = now.getSeconds();
          console.log("當前日期和時間為:" + year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds);

          運行上述代碼,控制臺將輸出當前日期和時間,例如:當前日期和時間為:2023-10-31 13:25:13。

          總結

          通過JavaScript的Date對象,我們可以方便地獲取當前的日期和時間。通過使用getDate()、getMonth()、getFullYear()、getHours()、getMinutes()和getSeconds()方法,可以輕松地獲取所需的日期和時間信息。


          主站蜘蛛池模板: 亚洲欧洲精品一区二区三区| 无码精品久久一区二区三区| 伊人久久精品一区二区三区| 2020天堂中文字幕一区在线观| 国产在线精品一区二区三区直播| 3d动漫精品一区视频在线观看| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 无码国产精品一区二区免费16| 美女啪啪一区二区三区| 日韩人妻不卡一区二区三区 | 人妻夜夜爽天天爽爽一区| 国产成人精品一区二区三区无码| 无码精品前田一区二区| 一区二区三区电影在线观看| 一区二区三区AV高清免费波多| 亚洲无线码一区二区三区| 亚洲一区精彩视频| 一区二区免费电影| 亚洲福利视频一区| 精品人妻一区二区三区四区| 日本一区二区三区四区视频| 一区二区三区免费视频播放器| 福利一区二区三区视频在线观看| 亚洲一区二区三区四区视频| 国产成人一区二区三区高清| 亚洲AV美女一区二区三区| 视频精品一区二区三区| 久久久久人妻精品一区蜜桃| 亚洲日本一区二区三区在线不卡| 久久99精品一区二区三区| 国产一区二区精品久久岳√ | 国产综合视频在线观看一区| 久久国产精品无码一区二区三区| 国产萌白酱在线一区二区| 亚洲电影唐人社一区二区| 无码人妻AⅤ一区二区三区 | 麻豆aⅴ精品无码一区二区| 国模大尺度视频一区二区| 国产成人一区二区三区| 美女毛片一区二区三区四区| 国产在线精品一区二区中文|