このパッケージは、 Intl.RelativeTimeFormat仕様から偏見が大きく逸脱しています。したがって、このパッケージを廃止し、スペックに準拠したポリフィルとして `@formatjs/intl-relativetimeformatを追加しました。
units ( day-shortなど)は、次のように移行する必要があります。 new IntlRelativeFormat ( 'en' , { units : 'second-short' } ) . format (
Date . now ( ) - 1000
) ;
// will be
new Intl . RelativeTimeFormat ( 'en' , { style : 'short' } ) . format ( - 1 , 'second' ) ;
new IntlRelativeFormat ( 'en' , { units : 'day-narrow' } ) . format (
Date . now ( ) - 48 * 3600 * 1000
) ;
// will be
new Intl . RelativeTimeFormat ( 'en' , { style : 'narrow' } ) . format ( - 2 , 'day' ) ;style: numeric numeric: alwaysスペックごと(これもデフォルトです) new IntlRelativeFormat ( 'en' , {
units : 'second-short' ,
style : 'numeric'
} ) . format ( Date . now ( ) - 1000 ) ;
// will be
new Intl . RelativeTimeFormat ( 'en' , { style : 'short' } ) . format ( - 1 , 'second' ) ; new IntlRelativeFormat ( 'en' , { units : 'day-narrow' , style : 'numeric' } ) . format (
Date . now ( ) - 48 * 3600 * 1000
) ;
// will be
new Intl . RelativeTimeFormat ( 'en' , { style : 'narrow' } ) . format ( - 2 , 'day' ) ;style: 'best fit'は少し難しいですが、 @formatjs/intl-utilsをリリースして、遷移を容易にしました。 new IntlRelativeFormat ( 'en' , { style : 'best fit' } ) . format ( Date . now ( ) - 1000 ) ;
// will be
import { selectUnit } from '@formatjs/intl-utils' ;
const diff = selectUnit ( Date . now ( ) - 1000 ) ;
new Intl . RelativeTimeFormat ( 'en' , { numeric : 'auto' } ) . format (
diff . value ,
diff . unit
) ; new IntlRelativeFormat ( 'en' , { style : 'best fit' } ) . format (
Date . now ( ) - 48 * 3600 * 1000
) ;
// will be
import { selectUnit } from '@formatjs/intl-utils' ;
const diff = selectUnit ( Date . now ( ) - 48 * 3600 * 1000 ) ;
new Intl . RelativeTimeFormat ( 'en' , { numeric : 'auto' } ) . format (
diff . value ,
diff . unit
) ;options.now in formatを使用している場合は、 formatjs/intl-utilsを使用して遷移することもできます。 new IntlRelativeFormat ( 'en' , { style : 'best fit' } ) . format ( Date . now ( ) - 1000 , {
now : Date . now ( ) + 1000
} ) ;
// will be
import { selectUnit } from '@formatjs/intl-utils' ;
const diff = selectUnit ( Date . now ( ) - 1000 , Date . now ( ) + 1000 ) ;
new Intl . RelativeTimeFormat ( 'en' , { numeric : 'auto' } ) . format (
diff . value ,
diff . unit
) ; new IntlRelativeFormat ( 'en' , { style : 'best fit' } ) . format (
Date . now ( ) - 48 * 3600 * 1000 ,
{ now : Date . now ( ) + 1000 }
) ;
// will be
import { selectUnit } from '@formatjs/intl-utils' ;
const diff = selectUnit ( Date . now ( ) - 48 * 3600 * 1000 , Date . now ( ) + 1000 ) ;
new Intl . RelativeTimeFormat ( 'en' , { numeric : 'auto' } ) . format (
diff . value ,
diff . unit
) ;JavaScriptは、相対的なタイム文字列に日付を付けます(例:「3時間前」)。
このパッケージは、相対的な時間のさまざまなバリエーションをフォーマットする方法を提供することを目的としています。このパッケージは、ブラウザとnode.jsを介してサーバーで使用できます。
この実装は、concept.jsに非常に似ていますが、200を超える言語をサポートする業界標準であるUnicode CLDRロケールデータに基づいたフォーマット機能のみを提供します。
var rf = new IntlRelativeFormat ( locales , [ options ] ) ; locales 、 "en-US"などの単一言語タグまたは最初の一致が使用されるそれらの配列のいずれかです。 options 、フォーマットされた相対時間文字列の出力を制御する方法を提供します。
var output = rf . format ( someDate , [ options ] ) ;このライブラリを使用する最も一般的な方法は、 IntlRelativeFormatインスタンスを構築し、異なる日付値をフォーマットするために何度も再利用することです。例えば:
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"しきい値に基づいて、 "best fit" (「昨日」)および"numeric" (「1日前」)出力のスタイルオプション。
特定のユニットで常にレンダリングするためのユニットオプション。たとえば、「1か月前」ではなく「30日前」。
相対時間が計算される「今」値を指定し、 format()を許可する能力。
`intl.relativetimeformatを使用した相対タイム文字列のフォーマット出力
IntlRelativeFormatインスタンスのformat()メソッドへの繰り返し呼び出し用に最適化されています。
Intl依存関係このパッケージは、 Intlから次の機能を想定しています。
Intl.PluralRulesIntl.RelativeTimeFormat環境がそれらをサポートしていない場合は、ポリフィルを自由につかんでください。
パッケージとポリフィルのインストール:
npm install intl-relativeformat --save単にrequire() :
var IntlRelativeFormat = require ( 'intl-relativeformat' ) ;
var rf = new IntlRelativeFormat ( 'en' ) ;
var output = rf . format ( dateValue ) ;パッケージをインストールする:
npm install intl-relativeformat --saveこのパッケージとバンドルでサポートしたい特定のロケールrequire()だけです。
var IntlRelativeFormat = require ( 'intl-relativeformat' ) ;注:node.jsでは、200以上のすべての言語のデータがライブラリとともにロードされますが、browserify/webpackにバンドすると、データは意図的に無視されます(詳細についてはpackage.json参照)。
IntlRelativeFormatコンストラクター日付を相対時間にフォーマットするには、 IntlRelativeFormatコンストラクターを使用します。コンストラクターは2つのパラメーターを取得します。
ロケール- {string | string []} - BCP 47言語タグを備えた文字列、またはそのような文字列の配列。ロケールを提供しない場合、デフォルトのロケールが使用されます。一連のロケールが提供されると、各アイテムとその祖先のロケールがチェックされ、最初のアイテムが登録されたロケールデータが返されます。参照:詳細については、ロケール解像度。
[オプション] - {オブジェクト} - フォーマットスタイルのユーザー定義オプションを備えたオプションオブジェクト。参照:詳細については、カスタムオプション。
注:カスタムオプションを使用する場合を除き、 rfインスタンスはアプリケーション全体に十分である必要があります。
IntlRelativeFormat 、組み込みのIntl APIと同様のロケール解像度プロセスを使用して、コンストラクターに渡されたlocales値に基づいて使用するロケールデータを決定します。この解像度プロセスの結果はresolvedOptions()プロトタイプメソッドを呼び出すことで決定できます。
以下は、ロケール値を解決するためにIntlRelativeFormatが経る抽象的な手順です。
追加のロケールデータがロードされていない場合、ロケールは常に"en"に解決されます。
"fr-FR"のような葉のロケールのロケールデータが欠落しているが、その先祖のいずれか"fr"のデータがある場合、この場合はその祖先が使用されます。
指定されたロケールのデータがある場合、そのロケールは解決されます。つまり、
var rf = new IntlRelativeFormat ( 'en-US' ) ;
assert ( rf . resolvedOptions ( ) . locale === 'en-US' ) ; // true解決されたロケールが正規化されました。たとえば、 "en-us" "en-US"
注: localesに配列が提供されると、その配列内の各アイテムに対して一致が見つかるまで上記の手順が発生します。
オプションの2番目の引数options相対時間のフォーマット方法をカスタマイズする方法を提供します。
By default, the relative time is computed to the best fit unit, but you can explicitly call it to force units to be displayed in "second" , "second-short" , "second-narrow" , "minute" , "minute-short" , "minute-narrow" , "hour" , "hour-short" , "hour-narrow" , "day" , "day-short" , "day-narrow" , "month" , "month-short" , "month-narrow" , "year" 、 "year-short"または"year-narrow" :
var rf = new IntlRelativeFormat ( 'en' , {
units : 'day'
} ) ;
var output = rf . format ( dateValue ) ;その結果、出力は「2か月前」ではなく「70日前」になります。
デフォルトでは、相対時間は"best fit"として計算されます。つまり、「1日前」の代わりに「昨日」または「1年で」が「来年」になります。
var rf = new IntlRelativeFormat ( 'en' , {
style : 'numeric'
} ) ;
var output = rf . format ( dateValue ) ;その結果、出力は「昨日」ではなく「1日前」になります。
resolvedOptions()メソッドこのメソッドは、インスタンス作成中に解決されたオプション値を持つオブジェクトを返します。現在、 localeプロパティのみが含まれています。これが例です:
var rf = new IntlRelativeFormat ( 'en-us' ) ;
console . log ( rf . resolvedOptions ( ) . locale ) ; // => "en-US"指定されたロケールがすべての低ケース値である"en-us"であることに注意してください。しかし、それは解決され、 "en-US"に正規化されました。
format(date, [options])メソッドフォーマットメソッド( JavaScriptの日付またはタイムスタンプを取得)およびオプションのoptions引数は、 dateを「now」(またはoptions.now )と比較し、フォーマットされた文字列を返します。たとえば、コンストラクターに渡された対応するロケールの「3時間前」。
var output = rf . format ( new Date ( ) ) ;
console . log ( output ) ; // => "now" 「Now」値を指定する場合は、 options.nowを介して提供できますDate.now()を照会する代わりに使用して、現在の「Now」値を取得します。
このソフトウェアはYahoo!で無料で使用できますInc. BSDライセンス。ライセンステキストと著作権情報については、ライセンスファイルを参照してください。