# generaltranslation: General Translation Core SDK: formatRelativeTimeFromDate URL: https://generaltranslation.com/zh/docs/core/functions/formatting/format-relative-time-from-date.mdx --- title: formatRelativeTimeFromDate description: 可根据 Date 格式化相对时间并自动选择最佳单位的独立函数 --- ## 概述 独立的 `formatRelativeTimeFromDate` 函数可根据 `Date` 生成相对时间字符串,并自动选择最合适的单位 (秒、分钟、小时、天、周、月或年) 。 ```typescript import { formatRelativeTimeFromDate } from 'generaltranslation'; const pastDate = new Date(Date.now() - 7200000); // 2小时前 const formatted = formatRelativeTimeFromDate(pastDate, { locales: 'en-US', baseDate: new Date() }); // 返回:"2 hours ago" ``` ## 参考 ### 参数 | 名称 | 类型 | 说明 | | --------- | -------- | ------------------------ | | `date` | `Date` | 要相对于 `baseDate` 进行格式化的日期 | | `options` | `object` | 格式化配置 | ### 选项 | 名称 | 类型 | 说明 | | ---------------- | ------------------------------- | -------------------------- | | `locales` | `string \| string[]` | **必填。** 用于格式化的区域设置 | | `baseDate?` | `Date` | 用于比较的基准日期。默认为 `new Date()` | | `numeric?` | `'always' \| 'auto'` | 是否始终以数字形式输出。默认为 `'auto'` | | `style?` | `'long' \| 'short' \| 'narrow'` | 输出长度。默认为 `'long'` | | `localeMatcher?` | `'best fit' \| 'lookup'` | 使用的区域设置匹配算法 | ### 返回值 `string` - 经格式化的相对时间字符串 (例如“2 小时前”“3 天后”) 。 *** ## 示例 ### 基本用法 ```typescript copy import { formatRelativeTimeFromDate } from 'generaltranslation'; const now = new Date(); // 2小时前 const pastDate = new Date(now.getTime() - 7200000); console.log(formatRelativeTimeFromDate(pastDate, { locales: 'en-US', baseDate: now })); // 输出:"2 hours ago" // 3天后 const futureDate = new Date(now.getTime() + 259200000); console.log(formatRelativeTimeFromDate(futureDate, { locales: 'en-US', baseDate: now })); // 输出:"in 3 days" ``` ### 多个区域设置 ```typescript copy import { formatRelativeTimeFromDate } from 'generaltranslation'; const pastDate = new Date(Date.now() - 86400000); // ~1天前 const now = new Date(); const locales = ['en-US', 'fr-FR', 'ja-JP', 'de-DE']; locales.forEach(locale => { console.log(`${locale}: ${formatRelativeTimeFromDate(pastDate, { locales: locale, baseDate: now })}`); }); // 输出: // en-US: yesterday // fr-FR: hier // ja-JP: 昨日 // de-DE: gestern ``` *** ## 注意事项 * 根据 `date` 与 `baseDate` 的差值自动选择最合适的单位 * 默认值为 `numeric: 'auto'` 和 `style: 'long'` * 如果未提供 `baseDate`,则默认使用 `new Date()` —— 请注意,这可能会在服务器端渲染应用中导致水合不匹配 * 底层基于 [`Intl.RelativeTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat) 实现 ## 后续步骤 * 如需显式的值 + 单位格式化,请参阅 [`formatRelativeTime`](/docs/core/functions/formatting/format-relative-time) * 如需独立进行日期/时间格式化,请参阅 [`formatDateTime`](/docs/core/functions/formatting/format-date-time) * 如需了解基于实例的用法,请参阅 GT 类的 [`formatRelativeTimeFromDate`](/docs/core/class/methods/formatting/format-relative-time-from-date)