Intl.DurationFormat اکنون Baseline است به تازگی در دسترس است

تاریخ انتشار: 20 مارس 2025

یک بیت متداول از اطلاعاتی که ممکن است در یک صفحه وب ببینید، متنی است که می گوید چقدر تا یک رویداد خاص، یا چه مدت از زمان وقوع یک رویداد گذشته است. این معمولاً به صورت رشته ای نمایش داده می شود که مدت زمان را بر حسب ساعت، دقیقه، ثانیه یا سایر واحدهای مفید زمان ارتباط می دهد.

Intl.DurationFormat یک ویژگی مفید است که این کار را برای شما در مرورگر انجام می دهد و در عین حال نیازهای بین المللی سازی را که ممکن است داشته باشید، بدون نیاز به جاوا اسکریپت اضافی محاسبه می کند. از مارس 2025، به تازگی در دسترس است.

Intl.DurationFormat چگونه کار می کند

Intl.DurationFormat کلاسی است که وقتی نمونه سازی می شود، رشته ای را برمی گرداند که مدت زمان را توصیف می کند. با تعیین یک شی حاوی کلیدها و مقادیری که مطابق با واحدهای زمانی است که می خواهید رشته ای برای آن تولید شود، کار می کند:

// Specify the duration:
const duration = {
  years: 1,
  hours: 20,
  minutes: 15,
  seconds: 35
};

// Output: '1 yr, 20 hr, 15 min, 35 sec'
new Intl.DurationFormat('en').format(duration);

برای برگرداندن یک رشته در قالب طولانی، مقدار 'long' را به گزینه style در آرگومان دوم سازنده ارسال کنید:

const duration = {
  years: 1,
  hours: 20,
  minutes: 15,
  seconds: 35
};

// Output: '1 year, 20 hours, 15 minutes, 35 seconds'
new Intl.DurationFormat('en', { style: 'long' }).format(duration);

تاکنون، این نمونه‌ها رشته‌هایی را به زبان انگلیسی تولید می‌کنند. با توجه به اینکه این یک ویژگی بین‌المللی‌سازی است، سودمندی واقعی آن این است که می‌توانید در هر محلی معتبر ارسال کنید و رشته‌ها را به هر زبانی که نیاز دارید قالب‌بندی کنید:

const duration = {
  years: 1,
  hours: 20,
  minutes: 15,
  seconds: 35
};

// Output: '1 Jahr, 20 Stunden, 15 Minuten und 35 Sekunden'
new Intl.DurationFormat('de', { style: 'long' }).format(duration);

// Output: '1 año, 20 horas, 15 minutos y 35 segundos'
new Intl.DurationFormat('es', { style: 'long' }).format(duration);

// Output: '1年20小时15分钟35秒钟'
new Intl.DurationFormat('zh', { style: 'long' }).format(duration);

// Output: '1 år, 20 timer, 15 minutter og 35 sekunder'
new Intl.DurationFormat('no', { style: 'long' }).format(duration);

// Output: 'mwaka 1, saa 20, dakika 15 na sekunde 35'
new Intl.DurationFormat('sw', { style: 'long' }).format(duration);

این نمونه‌ها فقط به این نکته اشاره می‌کنند که با این ویژگی جدید چه کاری می‌توانید انجام دهید. برای بررسی عمیق‌تر توانایی‌های آن، اسناد Intl.DurationFormat در MDN را برای اطلاعات بیشتر بخوانید.