# @edtf-ts/core 中文文档

规范地址：https://npmcn.com/package/%40edtf-ts/core/

版本：0\.6\.0
npm 元数据更新时间：2026-09-05T19:57:49.121Z
中文译文更新时间：2026-11-13T07:22:58.545Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40edtf-ts/core
原文对照：https://npmcn.com/package/%40edtf-ts/core/?lang=original
项目主页：https://github.com/BobPritchett/edtf-ts#readme
源码仓库：https://github.com/BobPritchett/edtf-ts

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.5 MB，9 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2026-01-06T00:39:06.715Z
- 最新版本发布：2026-09-05T19:57:48.938Z
- 近 30 天下载量：4556（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：8（近 12 个月 8 个）

## 中文简介

具有时间推理的扩展日期/时间格式的现代类型脚本执行

## 安装

```sh
npm install @edtf-ts/core
```

也可以使用：`pnpm add @edtf-ts/core`、`yarn add @edtf-ts/core`、`bun add @edtf-ts/core`

## README

# @edtf-ts/core - EDTF 类型脚本和模糊日期

**日期,人类的平面**

[![npm version](https://img.shields.io/npm/v/@edtf-ts/core.svg)](https://www.npmjs.com/package/@edtf-ts/core) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

现代类型脚本执行 [扩展日期/时间格式( EDTF)](https://www.loc.gov/standards/datetime/) 与时间推理,模糊的日期比较,以及人可读格式化.

添加 [核心业务](https://bobpritchett.github.io/edtf-ts/api/operations) 提供单词拼写、大年范围、有标记的有限度/开放/未知界限、懒惰的数值计数以及所有关系摘要。 现有 `FuzzyDate` 方法和收集阵列仍然可用。 重要数字界限现在涵盖所显示的范围(`1950S2` 表示1900-1999年);无效的数字计数被否决.

**[GitHub 仓库](https://github.com/BobPritchett/edtf-ts)** | **[文档](https://bobpritchett.github.io/edtf-ts/)** | **[交互式播放场](https://bobpritchett.github.io/edtf-ts/playground)**

## 从0.5.0升至0.6.0

现有的出口品仍然可用。 现有呼叫者面临的主要风险是:

-   日期间隔终点被拒绝. 使用 `FuzzyDate.from()` 或者说 `parse()` 用于处理验证失败。 独立 `Date.toISOString()` 时间戳在默认情况下仍然被接受;毫秒被保存在边框和ISO输出中. 严格模式排除分数秒.
-   `compare()` 编号 : `.compareTo()` 现在返回 `number | 'UNKNOWN'`;数字任务和直接排序回调可能需要TypeScript守护.
-   `sort()`, (中文(简体) ), `earliest()`, (中文(简体) ), `latest()`,以及 `FuzzyDate.compare()` 当将时间区合格时间戳与日历日期或无时区日期相混合时会扔出.

这个 [移徙指南](https://bobpritchett.github.io/edtf-ts/guide/semantics-migration) 解释安全适应,结果类型变化,以及高级关系回调. 更新 `@edtf-ts/natural` 同时,如果你使用它.

## 为什么是EDTF?

人们不会像电脑那样经历时间。 我们记得 _季节_, (中文(简体) ), _时代_,以及 _大约瞬间_。我们说"左右","前","后","有时之间"

但大多数软件坚持 **刚性ISO 8601日期**迫使人类假装知道更多 当软件只接受确切的日期时,用户被迫猜测、发明或留下空白-丢失有价值的信息.

**EDTF之所以存在,是因为实时是杂乱无章的——并且假装否则会丢失信息.**

## 特征

-   **模糊数据 API** - 与 IDE 自动完成的基于方法的临时启发接口
-   **紧急信托基金 0、1和2级** - 用与来源相联的符合物进行严格剖面验证
-   **类型脚本第一** - 歧视工会的完整安全
-   **艾伦的间隔代数** - 13个具有四等逻辑的时间关系
-   **可读格式** - 英语、西班牙语和法语短语,包括限定词、汇编、季节和年龄
-   **零运行时间依赖关系** -轻而易举
-   **BigInt 支持** - 处理超过JavaScript极限的极端历史日期
-   **树能震动** - 只导入你需要的东西

## 本地化输出

```typescript
import { FuzzyDate } from '@edtf-ts/core';

const date = FuzzyDate.parse('1870-03-12');
date.format({ locale: 'es-ES' }); // '12 de marzo de 1870'
date.format({ locale: 'fr-FR' }); // '12 mars 1870'
```

默认为 `en-US`。当通过一个语言 `@edtf-ts/natural`,确保其语言符合输入,或设置 `language` 当然 这个 [游乐场](https://bobpritchett.github.io/edtf-ts/playground) 以您的浏览器语言开始, 并为所有解析和渲染提供一个顶级覆盖 。 见 [移徙指南](https://bobpritchett.github.io/edtf-ts/guide/semantics-migration) 用于兼容性细节.

## 安装

```bash
npm install @edtf-ts/core
# or
pnpm add @edtf-ts/core
# or
yarn add @edtf-ts/core
```

## 快速启动

```typescript
import { FuzzyDate } from '@edtf-ts/core';

// Parse EDTF strings into FuzzyDate objects
const date = FuzzyDate.parse('1985-04-12');
const interval = FuzzyDate.parse('2004-06/2006-08');
const uncertain = FuzzyDate.parse('1984?');
const decade = FuzzyDate.parse('198X'); // Any year 1980-1989

// Method-based API with IDE autocomplete
date.format(); // "April 12, 1985"
date.isBefore(interval); // 'YES'
uncertain.isUncertain; // true
decade.hasUnspecified; // true

// Temporal comparison with four-valued logic
const a = FuzzyDate.parse('1985');
const b = FuzzyDate.parse('1990');

a.isBefore(b); // 'YES' - definitely before
a.during(b); // 'NO' - not contained within
a.overlaps(b); // 'NO' - no time overlap

// Handle uncertainty honestly
const year = FuzzyDate.parse('1985');
decade.equals(year); // 'MAYBE' - could be 1985

// Boolean convenience methods for when you need true/false
a.isDefinitelyBefore(b); // true
decade.isPossiblyBefore(year); // true (could be 1980-1984)
```

## EDTF 规格支持

### 0级(ISO 8601简介)

-   日历日期: `1985-04-12`
-   精度降低: `1985-04`, (中文(简体) ), `1985`
-   日期/时间: `1985-04-12T23:20:30`
-   间隔 : `1985/1990`, (中文(简体) ), `1985-04-12/1985-04-15`

### 1级(延长)

-   不确定/近似值 : `1984?`, (中文(简体) ), `1984~`, (中文(简体) ), `1984%`
-   未指定数字 : `199X`, (中文(简体) ), `19XX`, (中文(简体) ), `1985-XX-XX`
-   延长间隔 : `1984?/2004~`, (中文(简体) ), `../1985`, (中文(简体) ), `1985/..`
-   超过 4 位数 : `Y170000002`
-   季节: `1985-21` (春天), `1985-22` (夏季)

### 第二级(部分不确定性)

-   构成部分级资格: `?2004-06`, (中文(简体) ), `2004-~06`, (中文(简体) ), `2004-06-~11`
-   未说明的部分: `156X-12-25`, (中文(简体) ), `15XX-12-25`
-   设置/列表 : `[1985,1990,1995]`, (中文(简体) ), `{1985-04,1985-05}`
-   延长季节 : `1985-25` (温特,北部)

## 契约年和清单

`compactYearRanges(parsedValue)` 返回压缩 EDTF 如 `[1667..1668,1670..1672]` 从 `[1667,1668,1670,1671,1672]`。它按现有顺序合并相邻的确切年份,保留空白、重复、打开界限和设置/列表含义。 其他精确度和合格年限仍然分开。 原始解析对象及其 `edtf` 保持不变.

`formatHuman` 使用英文、西班牙文和法文的简明年限。 譬如说, `[1870..1880]` 作为 `One of: 1870 through 1880`, (中文(简体) ), `Una de estas fechas: 1870 a 1880`,或 `Une de ces dates: 1870 à 1880`。 。 。 .

## 比较中的真理值

比较方法使用四分法逻辑进行精确的时间推理:

-   **对** - 关系肯定存在
-   **无** - 关系绝对没有
-   **也许** - 关系可能存在(由于不精确而不确定)
-   **不详** - 无法确定(缺少信息)

```typescript
const y1980 = FuzzyDate.parse('1980');
const y1990 = FuzzyDate.parse('1990');
const decade = FuzzyDate.parse('198X');

y1980.isBefore(y1990); // 'YES' - bounds prove it
decade.equals(y1985); // 'MAYBE' - could be 1985

// Boolean convenience methods
y1980.isDefinitelyBefore(y1990); // true
decade.isPossiblyBefore(y1985); // true
```

## 文档

完整的文件可在 **[bibpritchett.github.io/edtf-ts (英语)](https://bobpritchett.github.io/edtf-ts/)**

-   **[获取启动指南](https://bobpritchett.github.io/edtf-ts/guide/getting-started)**
-   **[API 参考](https://bobpritchett.github.io/edtf-ts/api/core)**
-   **[比较指南](https://bobpritchett.github.io/edtf-ts/guide/comparison)**
-   **[交互式播放场](https://bobpritchett.github.io/edtf-ts/playground)**

## 相关软件包

-   **[@ edtf- ts/ 自然](https://www.npmjs.com/package/@edtf-ts/natural)** - 自然语言日期分析(“1950年简历”,“1985年1月初”)

## 许可证

麻省理工学院版权2025 Bob Pritchett

## 捐款

欢迎捐款! 见 [GitHub 仓库](https://github.com/BobPritchett/edtf-ts) 详细情况.

## 互通性简介

`parse(input, { level: 2, conformance: 'strict' })`, (中文(简体) ), `isValid`,以及 `FuzzyDate.from` 编号 : `FuzzyDate.parse` 支持严格的互操作性配置 。 扩展支持是默认的 。 季节间隔终点是支持的延伸;严格的模式不包括季节终点,季节收集会员,以及合格的季节. 合格的日历日期收藏成员仍然得到支持。 人类格式化保留了明确的计数/范围结构,包括月/日范围. 见 [互操作性和迁移](https://npmcn.com/package/docs/guide/interoperability.md)。 。 。 .

## 常见问题

### @edtf-ts/core 是什么？

具有时间推理的扩展日期/时间格式的现代类型脚本执行

### 如何安装 @edtf-ts/core？

在项目目录运行 npm install @edtf-ts/core，或使用 pnpm add / yarn add / bun add。

### @edtf-ts/core 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @edtf-ts/core 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @edtf-ts/core 可以商用吗？

@edtf-ts/core 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @edtf-ts/core 的下载量有多少？

根据 npm 官方下载统计，@edtf-ts/core 在 2026/10/13 – 2026/11/11 这 30 天内被下载 4,556 次，日均约 152 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @edtf-ts/core 还在维护吗？

最新版本 0\.6\.0 发布于 2026/09/06（2 个月前）；至今共发布 8 个版本，其中过去 12 个月发布了 8 个；首次发布于 2026/01/06。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

