# @ember-intl/intl-relativeformat 中文文档

规范地址：https://npmcn.com/package/%40ember-intl/intl-relativeformat/

版本：2\.1\.0
npm 元数据更新时间：2026-10-20T09:44:03.793Z
中文译文更新时间：2026-11-13T15:02:23.252Z
软件包许可：BSD-3-Clause

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

原始 npm 页面：https://www.npmjs.com/package/%40ember-intl/intl-relativeformat
原文对照：https://npmcn.com/package/%40ember-intl/intl-relativeformat/?lang=original
项目主页：https://github.com/yahoo/intl-relativeformat
源码仓库：https://github.com/yahoo/intl-relativeformat

弃用说明：Package no longer supported\. Contact Support at https://www\.npmjs\.com/support for more info\.

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

- 包体积（解压后）：8.8 MB，265 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- 运行依赖：1 个
- 首次发布：2018-10-09T00:31:50.414Z
- 最新版本发布：2018-10-09T00:31:50.865Z
- 近 30 天下载量：25120（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：1（近 12 个月 0 个）

## 中文简介

格式化 JavaScript 日期到相对时间字符串.

## 安装

```sh
npm install @ember-intl/intl-relativeformat
```

也可以使用：`pnpm add @ember-intl/intl-relativeformat`、`yarn add @ember-intl/intl-relativeformat`、`bun add @ember-intl/intl-relativeformat`

## README

# INTL 相对格式

格式化 JavaScript 日期到相对时间字符串(如"3小时前").

[![npm Version](https://img.shields.io/npm/v/intl-relativeformat.svg?style=flat-square)](https://www.npmjs.org/package/intl-relativeformat) [![Build Status](https://img.shields.io/travis/yahoo/intl-relativeformat/master.svg?style=flat-square)](https://travis-ci.org/yahoo/intl-relativeformat) [![Dependency Status](https://img.shields.io/david/yahoo/intl-relativeformat.svg?style=flat-square)](https://david-dm.org/yahoo/intl-relativeformat)

[![Sauce Test Status](https://saucelabs.com/browser-matrix/intl-relativeformat.svg)](https://saucelabs.com/u/intl-relativeformat)

## 概览

### 目标

这个软件包旨在提供一种格式化相对时间的不同变化的方法。 您可以在浏览器和服务器上通过Node.js使用此软件包.

这一执行情况与 [一分钟。 js](http://momentjs.com/),在概念中,虽然它只提供基于 Unicode 的格式化特性 [缩略语](http://cldr.unicode.org/) 地语数据,一种支持200多种语言的行业标准.

_说明: `IntlRelativeFormat` API可能更改以保持与 ECMA-402 的同步, 但此软件包将随同 [铸造](http://semver.org/)。 。 。 ._

### 如何运作

这个API与 [ECMA 402 欧经委](http://www.ecma-international.org/ecma-402/1.0/index.html)是因为 [日期时间格式](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat) 财务报告和审定财务报表 [数字格式](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat)。 。 。 .

```js
var rf = new IntlRelativeFormat(locales, [options]);
```

这个 `locales` 可以是单一语言标记,例如, `"en-US"` 或其中一组将使用第一个匹配. `options` 提供了控制格式化相对时间字符串输出的方法.

```js
var output = rf.format(someDate, [options]);
```

### 常用用法示例

使用此库的最常用方法是构建一个 `IntlRelativeFormat` 实例并多次重用,用于格式化不同的日期值;例如:

```js
var rf = new IntlRelativeFormat('en-US');

var posts = [
    {
        id   : 1,
        title: 'Some Blog Post',
        date : new Date(1426271670524)
    },
    {
        id   : 2,
        title: 'Another Blog Post',
        date : new Date(1426278870524)
    }
];

posts.forEach(function (post) {
    console.log(rf.format(post.date));
});
// => "3 hours ago"
// => "1 hour ago"
```

### 特征

-   使用行业标准 [区域数据](http://cldr.unicode.org/)。 。 。 .
    
-   样式选项 `"best fit"` ("元")并 `"numeric"` ("一日前")输出.
    
-   总是在特定单元中渲染的单位选项;例如"30天前",而不是"1个月前".
    
-   能够指定计算相对时间的“现在”值,允许 `format()`。 。 。 .
    
-   使用相对时间字符串格式化数字 [`Intl.NumberFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat)。 。 。 .
    
-   优化重复呼叫 `IntlRelativeFormat` 实例 `format()` 方法.
    

## 使用量

### `Intl` 依赖性

这个套装假设: [`Intl`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) 全球对象存在于运行时. `Intl` 在所有现代浏览器中都有存在, 并且有工作正在发生 [整合 `Intl` 输入节点.js](https://github.com/joyent/node/issues/6371)。 。 。 .

**幸运的是,这是 [Itl.js (英语)](https://github.com/andyearnshaw/Intl.js) 混合剂!** 如果您想要支持运行时间, 您需要有条件地加载多填充 `Intl` 尚未内置。 见 [浏览器兼容表](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#Browser_compatibility) 如果你有疑问.

### 在节点.js中装入 ItlRelative Format

安装软件包和多填充 :

```bash
npm install intl-relativeformat --save
npm install intl --save
```

简单 `require()` 此软件包 :

```js
if (!global.Intl) {
    global.Intl = require('intl'); // polyfill for `Intl`
}
var IntlRelativeFormat = require('intl-relativeformat');
var rf = new IntlRelativeFormat('en');
var output = rf.format(dateValue);
```

_注:在Node.js中,所有200+语言的数据与库一起被加载._

### 在浏览器中装入 ItlRelative Format

如果浏览器还没有 `Intl` API 内置, Intl. js Polyfill 需要加载到页面上, 以及任何需要支持的地块的地块数据 :

```html
<script src="intl/Intl.min.js"></script>
<script src="intl/locale-data/jsonp/en-US.js"></script>
```

_注意:现代浏览器已经拥有了 `Intl` API 内置, 这样您可以有条件地装入 Intl.js Polyfill, 通过检查 `window.Intl`。 。 。 ._

在您的页面中包含库 :

```html
<script src="intl-relativeformat/dist/intl-relativeformat.min.js"></script>
```

默认情况下,带有英语语言数据的 Intl 相对Format 船 (`en`) 内置到运行时图书馆. 当您需要将数据格式化到另一个地方时,请输入其数据;例如,法语:

```html
<script src="intl-relativeformat/dist/locale-data/fr.js"></script>
```

_注:本套件所支持的所有200+语言都使用其root BCP 47语言标记;即第一个连字符前的部分(如果有的话)._

### 用浏览器/ Webpack 装入内存格式

安装软件包 :

```bash
npm install intl-relativeformat --save
```

简单 `require()` 此软件包以及您想要在捆绑中支持的具体地址 :

```js
var IntlRelativeFormat = require('intl-relativeformat');
require('intl-relativeformat/dist/locale-data/en.js');
require('intl-relativeformat/dist/locale-data/fr.js');
```

_注:在Node.js中,所有200+语言的数据都与库一起被加载,但在将数据与浏览器/Webpack捆绑时,会故意忽略这些数据(见 `package.json` )以避免用你可能不需要的数据炸毁捆绑的大小._

### 公共 API

#### `IntlRelativeFormat` 构造器

要格式化日期与相对时间,请使用 `IntlRelativeFormat` 建筑师。 构造器需要两个参数:

-   **语言** - 说吧 _{String } 字符串 \[ \]_ - 带有BCP 47语言标记的字符串,或此类字符串的数组。 如果您不提供地语, 默认地语将被使用 。 当提供一系列的地块时,检查每个项及其祖先地块,并返回第一个有已注册地块数据的地块. **见: [本地分辨率](https://npmcn.com/package/%40ember-intl/intl-relativeformat/#readme-locale-resolution) 更多细节.**
    
-   **\[可选** - 说吧 _{对象}_ - 有用户定义的格式样式选项的可选对象. **见: [自定义选项](https://npmcn.com/package/%40ember-intl/intl-relativeformat/#readme-custom-options) 更多细节.**
    

_说明: `rf` 实例应足够用于整个应用程序,除非您想要使用自定义选项._

#### 本地分辨率

`IntlRelativeFormat` 使用类似于内置的本地解析过程 `Intl` APIs ,用于根据 `locales` 值传递给构造器。 该决议进程的结果可通过呼叫 `resolvedOptions()` 原型方法.

以下是抽象的步骤 `IntlRelativeFormat` 解决本地值 :

-   如果没有加载额外的地籍数据, 地籍将 _永远_ 决 议 `"en"`。 。 。 .
    
-   如果缺少叶片地块的数据 `"fr-FR"`但这里 _实值_ 其祖先之一的数据, `"fr"` 在这种情况下,它的祖先将被使用.
    
-   如果有指定地块的数据,那么该地块就会被解决;即,,
    
    ```js
    var rf = new IntlRelativeFormat('en-US');
    assert(rf.resolvedOptions().locale === 'en-US'); // true
    ```
    
-   已解决的地方现已正常化;例如, `"en-us"` 决心: `"en-US"`。 。 。 .
    

_注意: 当提供数组时 `locales`,在找到匹配之前,该数组中的每个项目都会发生上述步骤._

#### 自定义选项

可选的第二个论点 `options` 提供了一种自定义相对时间格式的方法.

##### 单位

默认情况下,相对时间是计算到最合适的单位,但可以明确调用强制 `units` 显示于 `"second"`, (中文(简体) ), `"second-short"`, (中文(简体) ), `"minute"`, (中文(简体) ), `"minute-short"`, (中文(简体) ), `"hour"`, (中文(简体) ), `"hour-short"`, (中文(简体) ), `"day"`, (中文(简体) ), `"day-short"`, (中文(简体) ), `"month"`, (中文(简体) ), `"month-short"`, (中文(简体) ), `"year"` 或者说 `"year-short"`数字 :

```js
var rf = new IntlRelativeFormat('en', {
    units: 'day'
});
var output = rf.format(dateValue);
```

因此,产出将是"70天前",而不是"2个月前".

##### 样式

默认情况下,相对时间计算为 `"best fit"`,也就是说,与其说是"一日前",而是会显示"元旦",或"一年内"会是"明年"等. 但您可以强制使用“ 数字” 选项 :

```js
var rf = new IntlRelativeFormat('en', {
    style: 'numeric'
});
var output = rf.format(dateValue);
```

因此,产出将取"一出一出"而不用"一出".

#### `resolvedOptions()` 方法

此方法返回对象, 包含实例创建过程中解决的选项值 。 目前只包含 `locale` 属性; 示例如下:

```js
var rf = new IntlRelativeFormat('en-us');
console.log(rf.resolvedOptions().locale); // => "en-US"
```

通知指定的地块如何是所有小写值 : `"en-us"`,但决定并正常化为: `"en-US"`。 。 。 .

#### `format(date, [options])` 方法

格式方法( E)_它需要 JavaScript 日期或时间戳_)和可选 `options` 参数将比较 `date` 与"现在"(或 `options.now`),并返回已格式化的字符串;例如,在相应的地块中“3小时前”传入构造器.

```js
var output = rf.format(new Date());
console.log(output); // => "now"
```

如果您想要指定“ 现在” 值, 可以通过 `options.now` 而不是查询 `Date.now()` 以获取当前“现在”值.

## 许可证

这个软件可以在雅虎下自由使用! BSD许可证. 见 [自由文件](https://github.com/yahoo/intl-relativeformat/blob/master/LICENSE) 许可证文本和版权信息.

## 常见问题

### @ember-intl/intl-relativeformat 是什么？

格式化 JavaScript 日期到相对时间字符串\.注意：该包已被作者标记为弃用——Package no longer supported\. Contact Support at https://www\.npmjs\.com/support for more info\.

### 如何安装 @ember-intl/intl-relativeformat？

在项目目录运行 npm install @ember-intl/intl-relativeformat，或使用 pnpm add / yarn add / bun add。

### @ember-intl/intl-relativeformat 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/ember-intl\_\_intl-relativeformat 是否存在。

### @ember-intl/intl-relativeformat 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @ember-intl/intl-relativeformat 可以商用吗？

@ember-intl/intl-relativeformat 使用 BSD-3-Clause 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。另外不得用原作者名义为衍生产品背书。以上为概括，不构成法律意见，请以许可原文为准。

### @ember-intl/intl-relativeformat 的下载量有多少？

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

### @ember-intl/intl-relativeformat 还在维护吗？

最新版本 2\.1\.0 发布于 2018/10/09（8 年前）；至今共发布 1 个版本，其中过去 12 个月发布了 0 个；首次发布于 2018/10/09。作者已将其标记为弃用，新项目建议寻找替代方案。

