前言:
此时咱们对“js当前时间代码”可能比较重视,各位老铁们都想要了解一些“js当前时间代码”的相关内容。那么小编在网上收集了一些对于“js当前时间代码””的相关知识,希望你们能喜欢,我们快快来学习一下吧!大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。
什么是 Chrono (v2)
Chrono 是 Javascript 中的自然语言日期解析器,它旨在处理大多数日期/时间格式并从任何给定文本中提取信息,内容包括:
今天、明天、昨天、上周五等2013 年 8 月 17 日 - 2013 年 8 月 19 日本周五 13:00 - 16:005 天前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 Saturdaychrono.parseDate('Friday', referenceDate);// Fri Aug 24 2012 12:00:00 GMT+0900 (JST) -- The day before was Fridaychrono.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 parsedchrono.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 DSTchrono.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 datechrono.parse('Jun 1st 2023 at 10:00 XYZ', new Date(2023, 3, 20), { timezones: { XYZ: parseXYZAsAmbiguousTz } })// "knownValues": {"month": 6, ..., "timezoneOffset": -120}参考资料
标签: #js当前时间代码