مدیریت تاریخ، زمان و منطقه زمانی با استفاده از Moment.js

کار با تاریخ و زمان در جاوا اسکریپت همیشه کمی پیچیده بوده است. به همین دلیل است که اگر در StackOverflow یک سوال مربوط به تاریخ بپرسید، اغلب پاسخ را خواهید شنید.از Moment.js استفاده کنید“.
Moment.js چیست؟
Moment.js یک جامعه منبع باز بزرگ است که با تاریخ و زمان در جاوا اسکریپت کار می کند. این به شما امکان می دهد با استفاده از یک API تمیز و مختصر، تاریخ ها و زمان ها را تجزیه، اعتبارسنجی، دستکاری و نمایش دهید.
در این وبلاگ به شما نشان خواهم داد که چگونه با Moment.js راه اندازی و اجرا کنید، و همچنین چندین مورد از موارد استفاده رایج آن را نشان می دهم.
شروع به کار با Moment.js
Moment.js را می توان از مرورگر و همچنین از داخل یک برنامه Node اجرا کرد. برای استفاده از آن با Node، ماژول را با استفاده از دستور هر کسی که زیر است نصب کنید.
npm install moment
yarn add moment
سپس، به سادگی require() or import
و مطابق شکل زیر از آن در برنامه خود استفاده کنید.
const moment = require('moment') or import moment from 'moment';
const today = moment();
console.log(today.format());
// 2023-05-05T10:55:16+05:30
قالب بندی تاریخ
Moment.js فرآیند تبدیل تاریخ به هر فرمت خاصی را ساده کرده است. همانطور که در مثال زیر نشان داده شده است، تبدیل فرمت تاریخ با Moment ساده است.
moment().format('MMMM Do YYYY, h:mm:ss a'); // May 5th 2023, 11:04:44 am
moment().format('dddd'); // Friday
moment().format("MMM Do YY"); // May 5th 23
moment().format('YYYY [escaped] YYYY'); // 2023 escaped 2023
moment().format(); // 2023-05-05T10:55:16+05:30
دستکاری تاریخ ها
تعدادی گزینه برای دستکاری وجود دارد moment
هدف – شی. به عنوان مثال، می توانید روز، ماه، سال و غیره را اضافه یا کم کنید add()
و subtract()
مواد و روش ها. مثال زیر نشان می دهد که چگونه هفت روز، ماه یا هفته به تاریخ فعلی اضافه می شود.
moment().add(7, 'days'); // adds 7 days to current date
moment().add(7, 'months'); // adds 7 months to current date
moment().add(7, 'years'); // adds 7 years to current date
به طور مشابه، subtract()
روش در زیر نشان داده شده است.
moment().subtract(7, 'days'); // subtracts 7 days to current date
moment().subtract(7, 'months'); // subtracts 7 months to current date
moment().subtract(7, 'years'); // subtracts 7 years to current date
توجه داشته باشید که هر یک از مثال های بالا، را برمی گرداند moment
هدف – شی. اگر یک تاریخ قابل خواندن برای انسان می خواهید، باید آن را بر اساس آن قالب بندی کنید.
زمان از هم اکنون
یکی دیگر از وظایف رایج تعیین مدت زمان بین دو تاریخ است. برای محاسبه زمان از تاریخ جاری، Moment.js از روشی به نام استفاده می کند fromNow()
.
moment('2023.05.03', 'YYYY.MM.DD').fromNow() // 2 days ago
اگر عبور کنیم true
به عنوان یک آرگومان، می توانیم مقدار را بدون پسوند دریافت کنیم.
moment('2023.05.03', 'YYYY.MM.DD').fromNow(true) // 2 days
پشتیبانی زبان بین المللی
Moment.js عالی ارائه می دهد i18n support
. این به شما امکان می دهد یک را اختصاص دهید global language
یا زبان را برای یک شی لحظه خاص تنظیم کنید. به طور پیش فرض از زبان انگلیسی پشتیبانی می کند. اگر می خواهید از هر زبان دیگری پشتیبانی کنید، مقادیر کلیدی آن زبان خاص را به آن اختصاص دهید moment.locale
. مثال خلاصه شده زیر که از اسناد Moment.js گرفته شده است، نشان میدهد که چگونه میتوان برای فرانسوی پشتیبانی اضافه کرد.
import moment from 'moment';
moment.locale('fr', {
months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
relativeTime : {
future : 'dans %s',
past : 'il y a %s',
s : 'quelques secondes',
m : 'une minute',
mm : '%d minutes',
h : 'une heure',
hh : '%d heures',
d : 'un jour',
dd : '%d jours',
M : 'un mois',
MM : '%d mois',
y : 'un an',
yy : '%d ans'
}
});
moment.locale('fr');
moment(1316116057189).fromNow(); // il y a une heure
moment.locale('en');
moment(1316116057189).fromNow(); // an hour ago
منطقه زمانی لحظه
Moment-Timezone یک افزونه برای Moment.js است. می تواند تاریخ ها را در هر منطقه زمانی تجزیه و نمایش دهد. برای استفاده از آن، ماژول را با استفاده از دستور زیر نصب کنید.
npm install moment-timezone --save # npm
yarn add moment-timezone # Yarn
قالب بندی تاریخ ها در هر منطقه زمانی
var jun = moment("2014-06-01T12:00:00Z");
var dec = moment("2014-12-01T12:00:00Z");
jun.tz('America/Los_Angeles').format('ha z'); // 5am PDT
dec.tz('America/Los_Angeles').format('ha z'); // 4am PST
jun.tz('America/New_York').format('ha z'); // 8am EDT
dec.tz('America/New_York').format('ha z'); // 7am EST
jun.tz('Asia/Tokyo').format('ha z'); // 9pm JST
dec.tz('Asia/Tokyo').format('ha z'); // 9pm JST
jun.tz('Australia/Sydney').format('ha z'); // 10pm EST
dec.tz('Australia/Sydney').format('ha z'); // 11pm EST
تبدیل تاریخ بین مناطق زمانی
var newYork = moment.tz("2014-06-01 12:00", "America/New_York");
var losAngeles = newYork.clone().tz("America/Los_Angeles");
var london = newYork.clone().tz("Europe/London");
newYork.format(); // 2014-06-01T12:00:00-04:00
losAngeles.format(); // 2014-06-01T09:00:00-07:00
london.format(); // 2014-06-01T17:00:00+01:00
نتیجه
Moment.js واقعاً یک کتابخانه عالی است که دستکاری ها و اعتبارسنجی های مربوط به تاریخ و زمان را ساده می کند. در این مقاله، ما بر روی برخی از ویژگیهای Moment.js تمرکز کردیم که به تجزیه، اعتبارسنجی و دستکاری تاریخها و زمانها در مرورگر و برنامههای Node.js کمک میکند. تعدادی افزونه مفید نیز برای Moment.js موجود است. برای اطلاعات بیشتر در مورد Moment.js، خواننده به مستندات کتابخانه هدایت می شود.
با تشکر از خواندن این پست، امیدوارم برای شما جالب بوده باشد!