با یکی از این کتابخانه های جایگزین فراتر از قابلیت های تاریخ و زمان داخلی جاوا اسکریپت بروید.
پشتیبانی داخلی جاوا اسکریپت برای مدیریت تاریخ مفید است، اما استفاده از آن ممکن است سخت باشد. عملیات پیچیده مانند تبدیل منطقه زمانی و قالب بندی تاریخ اغلب چالش برانگیز هستند.
خوشبختانه، چندین بسته موجود است که کار با تاریخ و زمان در جاوا اسکریپت را کمتر استرس زا می کند. در اینجا با برخی از این بسته ها و نحوه شروع کار بر روی این بسته ها آشنا خواهید شد.
1. Moment.js
هنگامی که صحبت از کار با تاریخ و زمان می شود، شیء اصلی جاوا اسکریپت Date عملکرد محدودی دارد.
Moment.js، یک کتابخانه جاوا اسکریپت، بسیاری از ویژگیهای غیرقابل دسترس را در شیء اصلی Date معرفی کرد. در نتیجه، به کتابخانه ای برای کار با تاریخ و زمان تبدیل شده است.
برای نصب Moment.js با npm، دستور زیر را از دایرکتوری پروژه خود اجرا کنید:
npm install moment
پس از نصب، می توانید Moment.js را به پروژه خود وارد کنید و عملیات را با کتابخانه انجام دهید:
const moment = require('moment');
const now = moment();
const nowString = now.format('YYYY-MM-DD HH:mm:ss');
console.log(`The current date and time is ${nowString}`);
این قطعه کد کتابخانه Moment.js را وارد می کند و با استفاده از تاریخ و زمان فعلی با تابع moment() یک شی لحظه ایجاد می کند. سپس نشان می دهد که چگونه شیء تاریخ ایجاد شده را به صورت رشته ای با متد ()format قالب بندی کنیم، که فرمت تاریخ/زمان را به عنوان آرگومان خود می گیرد.
همچنین می توانید از این کتابخانه برای جمع و تفریق فواصل زمانی استفاده کنید:
const addTenMinutes = moment().add(10, 'minutes');
console.log(`${addTenMinutes.format('h:mm a')}`);
const subtractTwoDays = moment().subtract(2, 'days');
console.log(`${subtractTwoDays.format('dddd, MMMM Do YYYY')}`);
این برنامه دو متغیر را با فرمت های مختلف در کنسول ثبت می کند. اولین، addTenMinutes، نتیجه اضافه کردن 10 دقیقه به تاریخ و زمان فعلی را نگه می دارد. دومی، subtractTwoDays، دارای مقدار تاریخ و زمان فعلی است که دو روز از آن کم شده است.
Moment.js می تواند عملیات دیگری مانند بررسی سال های کبیسه و تبدیل از یک فرمت تاریخ به دیگری را انجام دهد.
مهم است که توجه داشته باشید که Moment.js دیگر توسط تیم توسعه دهنده اصلی خود نگهداری نمی شود. توسعه دهندگان توصیه می کنند از جایگزینی مانند Luxon.js استفاده کنید.
2. Luxon.js
Luxon.js یک کتابخانه جاوا اسکریپت قوی و مدرن تر برای کار با تاریخ است. جایگزینی برای Moment.js، محدودیتهای کتابخانه قدیمیتر مانند تغییرپذیری را برطرف میکند.
می توانید Luxon را با npm نصب کنید و سپس کلاس DateTime آن را در پروژه Node.js خود با استفاده از تابع ()require وارد کنید:
const { DateTime } = require('luxon');
در لوکسون، اشیاء DateTime به نمونههای زمانی اشاره میکنند که تا میلیثانیه کاهش مییابند.
می توانید اشیاء DateTime جدید ایجاد کنید و به اجزای آنها مانند سال، ماه، دقیقه و ثانیه دسترسی داشته باشید:
const now = DateTime.now();
const year = now.year;
const minute = now.minute;
const second = now.second;
این کد یک شیء جدید DateTime ایجاد می کند که تاریخ و زمان فعلی را با استفاده از متد now() نشان می دهد. سپس با استفاده از ویژگی های سال، دقیقه و ثانیه به اجزای آن تاریخ دسترسی پیدا می کند.
یک تفاوت عمده بین Luxon.js و Moment.js شخصیت تغییرناپذیر آن است. همه اشیاء DateTime در Luxon تغییر ناپذیر هستند، به این معنی که شما نمی توانید ویژگی های DateTime را تغییر دهید. در عوض، میتوانید نمونههای جدید DateTime را از نمونههای موجود ایجاد کنید.
مثلا:
const now = DateTime.now();
const tomorrow = now.plus({ days: 1 });
این کد یک شی DateTime جدید به نام فردا را بر اساس شی now با استفاده از متد plus ایجاد می کند و مقدار 1 روز را به عنوان آرگومان به آن ارسال می کند. متد plus یک شی DateTime جدید با تعداد روزهای مشخص شده به شی اصلی اضافه می کند.
یکی دیگر از مزایای Luxon.js پشتیبانی قابل اعتماد منطقه زمانی آن است که برای کار با تاریخ و زمان در برنامه های کاربردی وب مدرن ضروری است. این کتابخانه از Internationalization API در مرورگرهای مدرن برای ارائه پشتیبانی دقیق منطقه زمانی استفاده می کند.
با این حال، یکی از نقاط ضعف Luxon.js منابع محدود جامعه آن است.
3. Date-fns
Date-fns یک کتابخانه جاوا اسکریپت بسیار سبک است که برای کار با تاریخ و زمان طراحی شده است. این شیء بومی جاوا اسکریپت ساخته می شود.
Date-fns از تکنیک های برنامه نویسی کاربردی استفاده می کند و یک ویژگی غیرقابل تغییر را در خود جای داده است که کار با تاریخ ها را ساده تر می کند و احتمال اشکال در کد شما را کاهش می دهد.
پس از نصب date-fns با npm، بسته را با استفاده از تابع require وارد برنامه خود کنید:
const { format, addDays } = require('date-fns');
Date-fns ماژولار است. این شامل بسیاری از توابع است که می توانید با تخریب ساختار بسته، همانطور که در بلوک کد بالا نشان داده شده است، به آنها دسترسی پیدا کنید. کد فقط قالب و توابع addDays را از کتابخانه date-fns وارد می کند.
در اینجا مثالی از نحوه استفاده از این دو تابع آورده شده است:
const today = new Date();
const formattedDate = format(today, 'yyyy-MM-dd');
console.log(formattedDate);
const tomorrow = format(addDays(today, 1), 'yyyy-MM-dd');
console.log(tomorrow);
این برنامه استفاده از کتابخانه date-fns در جاوا اسکریپت را برای قالب بندی و دستکاری تاریخ ها نشان می دهد.
یک شی Date جدید ایجاد می کند که تاریخ فعلی را نشان می دهد. با استفاده از تابع قالب از کتابخانه date-fns، تاریخ جاری را قالب بندی می کند.
سپس از تابع addDays برای ایجاد یک شیء Date جدید که تاریخ فردا را نشان میدهد، استفاده میکند، آن را با استفاده از تابع قالببندی قالببندی میکند، و هم تاریخ جاری و هم تاریخ فردا را در کنسول در قالب «yyyy-MM-dd» ثبت میکند.
نقطه ضعف استفاده از Date-fns این است که از منطقه زمانی پشتیبانی نمی کند. در عوض، از یک کتابخانه جداگانه برای کار با مناطق زمانی با استفاده از توابع کمکی استفاده می کند.
4. Day.js
اگر به دنبال جایگزینی تغییرناپذیر، کوچکتر و سریعتر برای Moment.js هستید، Day.js، یک کتابخانه بسیار سبک دیگر، انتخاب خوبی است.
می توانید Day.js را به عنوان یک بسته در پروژه جاوا اسکریپت خود با اجرای دستور npm زیر نصب کنید:
npm install dayjs
برای وارد کردن Day.js به پروژه خود پس از نصب، می توانید از کد زیر استفاده کنید:
const dayjs = require('dayjs')
در اینجا برخی از توابع و روش های اساسی موجود در Day.js آورده شده است
const now = dayjs();
const date = dayjs('2023-03-23', 'YYYY-MM-DD');
const month = date.month();
const formattedDate = date.format('MMMM D, YYYY');
const nextWeek = date.add(1, 'week');
کد بالا یک شی Day.js جدید ایجاد می کند که تاریخ و زمان فعلی را نشان می دهد، یک رشته تاریخ را با یک قالب سفارشی تجزیه می کند و ماه را از متغیر تاریخ دریافت می کند. همچنین نحوه قالب بندی و افزودن به نمونه تاریخ را نشان می دهد.
مانند Date-fns، Day.js نمی تواند به تنهایی پشتیبانی منطقه زمانی را ارائه دهد. Day.js از یک سیستم پلاگین استفاده می کند که استفاده از آن را گیج کننده می کند.
از بین بسته های تحت پوشش، Day.js شبیه ترین بسته به Moment.js است. این باعث می شود در صورت نیاز، جابجایی بین این دو را آسان تر کنید.
انتخاب کتابخانه مناسب برای برنامه شما
انتخاب کتابخانه تاریخ و زمان مناسب برای برنامه جاوا اسکریپت تصمیم مهمی است که می تواند تاثیر زیادی بر کیفیت و قابلیت نگهداری کد شما داشته باشد.
هر یک از کتابخانه های مورد بحث در اینجا دارای نقاط قوت و ضعف خود هستند، بنابراین مهم است که قبل از تصمیم گیری، نیازهای خود را به دقت ارزیابی کنید.