Date و Time در جاوااسکریپت
بهنام نوبخت · ۱۴۰۵/۷/۱۱
در بسیاری از برنامههای واقعی، کار با تاریخ و زمان در جاوااسکریپت اهمیت زیادی دارد. نمایش تاریخ ثبت سفارش، زمان ورود کاربر، محاسبه سن، تعیین تاریخ انقضای یک اشتراک، محاسبه فاصله بین دو تاریخ، ایجاد شمارش معکوس و نمایش زمان ارسال پیام، همگی نمونههایی از کاربرد تاریخ و زمان هستند.
در جاوااسکریپت برای کار با تاریخ و زمان از شیء داخلی Date استفاده میکنیم. این شیء امکانات مختلفی برای ایجاد تاریخ، دریافت اجزای تاریخ، تغییر تاریخ، مقایسه تاریخها و محاسبه فاصله زمانی در اختیار ما قرار میدهد.
در این مقاله ابتدا با مفاهیم پایه Date آشنا میشویم و سپس به سراغ محاسبات و مثالهای کاربردی میرویم.
Date در جاوااسکریپت چیست؟
Date یک شیء داخلی در جاوااسکریپت است که برای نگهداری و کار با تاریخ و زمان استفاده میشود.
برای ساخت یک تاریخ جدید میتوانیم از ()new Date استفاده کنیم:
const now = new Date();
console.log(now);خروجی ممکن است چیزی شبیه این باشد:
Sat Sep 19 2026 12:30:15 GMT+0330مقدار دقیق خروجی به تاریخ، ساعت و منطقه زمانی سیستم شما بستگی دارد.
ایجاد تاریخ با ()new Date
یکی از سادهترین روشها برای ساخت تاریخ، استفاده از ()new Date بدون هیچ آرگومانی است:
const now = new Date();
console.log(now);در این حالت جاوااسکریپت تاریخ و زمان فعلی سیستم را در اختیار ما قرار میدهد.
نمایش تاریخ فعلی
const today = new Date();
console.log(today);این روش زمانی کاربرد دارد که بخواهیم زمان فعلی را در برنامه دریافت کنیم.
ساخت Date از یک تاریخ مشخص
میتوانیم یک تاریخ مشخص را نیز به Date بدهیم:
const date = new Date("2026-09-19");
console.log(date);همچنین میتوانیم تاریخ و زمان را مشخص کنیم:
const date = new Date("2026-09-19T15:30:00");
console.log(date);استفاده از قالبهای استاندارد مانند ISO برای نمایش تاریخ معمولاً انتخاب مناسبتری نسبت به رشتههای مبهم است.
ساخت Date با Timestamp
هر تاریخ در جاوااسکریپت میتواند به یک مقدار عددی به نام Timestamp تبدیل شود.
Timestamp تعداد میلیثانیههایی است که از یک نقطه زمانی مشخص در تاریخ محاسباتی جاوااسکریپت گذشته است.
مثلاً:
const date = new Date(0);
console.log(date);مقدار 0 نشاندهنده آغاز Unix Time است که برابر با:
January 1, 1970 00:00:00 UTCاست.
برای مثال:
const date = new Date(1000);
console.log(date);عدد 1000 یعنی هزار میلیثانیه، یعنی یک ثانیه بعد از زمان مبنا.
متد Date.now
برای دریافت Timestamp مربوط به زمان فعلی میتوانیم از Date.now استفاده کنیم:
const timestamp = Date.now();
console.log(timestamp);مثلاً ممکن است خروجی چیزی شبیه این باشد:
1789812345678این مقدار با گذشت زمان تغییر میکند.
کاربرد Date.now()
یکی از کاربردهای مهم Date.now() محاسبه مدت زمان اجرای یک عملیات است:
const start = Date.now();
for (let i = 0; i < 1000000; i++) {
// Some operation
}
const end = Date.now();
console.log(end - start);مقدار خروجی بر حسب میلیثانیه است.
دریافت Timestamp با متد getTime
اگر یک شیء Date داشته باشیم، میتوانیم با getTime() Timestamp آن را دریافت کنیم:
const date = new Date();
console.log(date.getTime());بنابراین این دو روش معمولاً نتیجه مشابهی برای زمان فعلی دارند:
Date.now();و:
new Date().getTime();دریافت اجزای تاریخ
گاهی به جای کل تاریخ، فقط به یک قسمت خاص مانند سال، ماه یا روز نیاز داریم.
جاوااسکریپت متدهای مختلفی برای این کار دارد.
دریافت سال
const date = new Date();
console.log(date.getFullYear());مثلاً:
2026دریافت ماه
برای دریافت ماه از ()getMonth استفاده میکنیم:
const date = new Date();
console.log(date.getMonth());اما یک نکته بسیار مهم وجود دارد.
شماره ماه در جاوااسکریپت از صفر شروع میشود.
یعنی:
0 → January
1 → February
2 → March
3 → April
4 → May
5 → June
6 → July
7 → August
8 → September
9 → October
10 → November
11 → Decemberبنابراین اگر:
console.log(date.getMonth());مقدار 8 را مشاهده کردید، یعنی ماه September است.
این یکی از رایجترین نکات گیجکننده هنگام کار با Date است.
دریافت روز ماه
برای دریافت شماره روز ماه از ()getDate استفاده میکنیم:
const date = new Date();
console.log(date.getDate());اگر امروز نوزدهم ماه باشد، خروجی:
19خواهد بود.
دریافت روز هفته
برای دریافت روز هفته از getDay() استفاده میکنیم:
const date = new Date();
console.log(date.getDay());مقدار getDay() بین 0 تا 6 است:
0 → Sunday
1 → Monday
2 → Tuesday
3 → Wednesday
4 → Thursday
5 → Friday
6 → Saturdayتوجه کنید که getDay() روز هفته را برمیگرداند، در حالی که getDate() روز ماه را برمیگرداند.
دریافت ساعت و زمان
برای دریافت ساعت:
const date = new Date();
console.log(date.getHours());برای دریافت دقیقه:
console.log(date.getMinutes());برای دریافت ثانیه:
console.log(date.getSeconds());و برای دریافت میلیثانیه:
console.log(date.getMilliseconds());مثلاً میتوانیم همه آنها را با هم نمایش دهیم:
const date = new Date();
console.log("Year:", date.getFullYear());
console.log("Month:", date.getMonth());
console.log("Day:", date.getDate());
console.log("Hour:", date.getHours());
console.log("Minute:", date.getMinutes());
console.log("Second:", date.getSeconds());ساخت تاریخ با سال، ماه و روز
میتوانیم تاریخ را با استفاده از مقادیر جداگانه نیز ایجاد کنیم:
const date = new Date(2026, 8, 19);
console.log(date);اما اینجا نیز باید به یک نکته بسیار مهم توجه کنیم:
ماه در constructor نیز از صفر شروع میشود.
بنابراین:
new Date(2026, 8, 19);یعنی:
Year = 2026
Month = September
Day = 19اگر بخواهیم September را مشخص کنیم باید مقدار 8 بدهیم، نه 9.
ساخت تاریخ با ساعت
میتوانیم ساعت، دقیقه، ثانیه و میلیثانیه را نیز مشخص کنیم:
const date = new Date(2026, 8, 19, 14, 30, 0);
console.log(date);ترتیب پارامترها به این صورت است:
Year
Month
Day
Hour
Minute
Second
Millisecondمثلاً:
const date = new Date(2026, 8, 19, 14, 30, 15);
console.log(date);یعنی تاریخ:
September 19, 2026
14:30:15تغییر تاریخ موجود
اشیای Date قابل تغییر هستند.
برای تغییر سال میتوانیم از ()setFullYear استفاده کنیم:
const date = new Date();
date.setFullYear(2030);
console.log(date);تغییر ماه
date.setMonth(5);یعنی ماه June، چون شمارهگذاری از صفر شروع میشود.
تغییر روز
date.setDate(25);تغییر ساعت
date.setHours(18);تغییر دقیقه
date.setMinutes(45);تغییر ثانیه
date.setSeconds(30);مثال کامل
const date = new Date();
date.setFullYear(2030);
date.setMonth(5);
date.setDate(10);
date.setHours(15);
date.setMinutes(20);
console.log(date);اضافه کردن روز به یک تاریخ
یکی از نکات جالب Date این است که اگر مقدار روز را از تعداد روزهای ماه بیشتر کنیم، جاوااسکریپت تاریخ را به ماه بعد منتقل میکند.
مثلاً:
const date = new Date(2026, 8, 19);
date.setDate(date.getDate() + 5);
console.log(date);در این مثال پنج روز به تاریخ اضافه شده است.
برای اضافه کردن یک روز:
date.setDate(date.getDate() + 1);برای اضافه کردن هفت روز:
date.setDate(date.getDate() + 7);برای کم کردن یک روز:
date.setDate(date.getDate() - 1);این روش در بسیاری از برنامههای واقعی کاربرد دارد.
اضافه کردن ماه
به همین شکل میتوانیم ماه را افزایش دهیم:
const date = new Date();
date.setMonth(date.getMonth() + 1);
console.log(date);در این مثال یک ماه به تاریخ فعلی اضافه شده است.
اضافه کردن سال
const date = new Date();
date.setFullYear(date.getFullYear() + 1);
console.log(date);در این مثال یک سال به تاریخ فعلی اضافه شده است.
مقایسه دو تاریخ
از آنجا که تاریخها را میتوان به Timestamp تبدیل کرد، مقایسه آنها نیز بسیار ساده میشود.
مثلاً:
const date1 = new Date("2026-09-10");
const date2 = new Date("2026-09-20");
if (date1 < date2) {
console.log("date1 is earlier");
}یا:
if (date2 > date1) {
console.log("date2 is later");
}همچنین میتوانیم از ()getTime استفاده کنیم:
if (date1.getTime() < date2.getTime()) {
console.log("date1 is earlier");
}بررسی برابر بودن دو تاریخ
برای بررسی برابر بودن تاریخها بهتر است Timestamp آنها را مقایسه کنیم:
const date1 = new Date("2026-09-19");
const date2 = new Date("2026-09-19");
if (date1.getTime() === date2.getTime()) {
console.log("Dates are equal");
}توجه کنید که:
date1 === date2برای دو شیء Date که جداگانه ساخته شدهاند، معمولاً false خواهد بود، حتی اگر تاریخ یکسانی داشته باشند.
محاسبه فاصله بین دو تاریخ
یکی از کاربردهای مهم Date محاسبه فاصله بین دو تاریخ است.
فرض کنید دو تاریخ داریم:
const startDate = new Date("2026-09-01");
const endDate = new Date("2026-09-19");
const difference = endDate - startDate;
console.log(difference);نتیجه بر حسب میلیثانیه خواهد بود.
تبدیل میلیثانیه به ثانیه
هر ثانیه:
1000 millisecondsاست.
بنابراین:
const seconds = difference / 1000;
console.log(seconds);تبدیل به دقیقه
هر دقیقه 60 ثانیه است:
const minutes = difference / (1000 * 60);
console.log(minutes);تبدیل به ساعت
const hours = difference / (1000 * 60 * 60);
console.log(hours);تبدیل به روز
هر روز تقریباً:
24 hoursاست.
بنابراین:
const days = difference / (1000 * 60 * 60 * 24);
console.log(days);مثال کامل
const startDate = new Date("2026-09-01");
const endDate = new Date("2026-09-19");
const difference = endDate - startDate;
const days = difference / (1000 * 60 * 60 * 24);
console.log("Difference:", days, "days");خروجی:
Difference: 18 daysگرد کردن فاصله زمانی
گاهی نتیجه محاسبه دقیقاً یک عدد صحیح نیست.
در این حالت میتوانیم از Math.floor() استفاده کنیم:
const days = Math.floor(
difference / (1000 * 60 * 60 * 24)
);
console.log(days);یا در صورت نیاز از:
Math.ceil()یا:
Math.round()استفاده کنیم.
تبدیل تاریخ به String
یکی از سادهترین روشهای نمایش تاریخ:
const date = new Date();
console.log(date.toString());است.
این روش تاریخ را به شکل یک رشته متنی نمایش میدهد.
toISOString()
برای دریافت تاریخ در قالب ISO میتوانیم از toISOString() استفاده کنیم:
const date = new Date();
console.log(date.toISOString());نمونه خروجی:
2026-09-19T09:00:00.000Zحرف Z در انتهای مقدار نشاندهنده UTC است.
toISOString() در ارتباط با APIها و ذخیره تاریخ در سیستمهای مختلف بسیار کاربردی است.
toLocaleDateString()
برای نمایش تاریخ با قالب محلی میتوانیم از toLocaleDateString() استفاده کنیم:
const date = new Date();
console.log(date.toLocaleDateString());همچنین میتوانیم Locale مشخص کنیم:
console.log(
date.toLocaleDateString("en-US")
);یا:
console.log(
date.toLocaleDateString("en-GB")
);برای نمایش فارسی نیز میتوانیم از Locale فارسی استفاده کنیم:
console.log(
date.toLocaleDateString("fa-IR")
);نکته مهم این است که Date خودش تاریخ را به تقویم میلادی نگهداری میکند، اما روشهای toLocale... میتوانند نحوه نمایش را بر اساس Locale تغییر دهند.
متد toLocaleString
اگر هم تاریخ و هم زمان را بخواهیم:
const date = new Date();
console.log(
date.toLocaleString("fa-IR")
);این روش برای نمایش اطلاعات به کاربر بسیار مفید است.
مثلاً برای تاریخ ثبت سفارش:
const orderDate = new Date();
console.log(
"Order date:",
orderDate.toLocaleString("fa-IR")
);Local Time و UTC
یکی از مفاهیم مهم در کار با تاریخ، تفاوت بین Local Time و UTC است.
Local Time به زمان محلی سیستم کاربر اشاره دارد.
UTC یک استاندارد زمانی جهانی است که بسیاری از سیستمها و APIها از آن استفاده میکنند.
برای دریافت ساعت محلی:
const date = new Date();
console.log(date.getHours());برای دریافت ساعت UTC:
console.log(date.getUTCHours());به همین ترتیب متدهای UTC دیگری نیز وجود دارند:
getUTCFullYear()
getUTCMonth()
getUTCDate()
getUTCDay()
getUTCHours()
getUTCMinutes()
getUTCSeconds()چرا UTC مهم است؟
فرض کنید یک کاربر در ترکیه سفارش ثبت میکند و کاربر دیگری در کشور دیگری همان سفارش را مشاهده میکند.
اگر زمانها به شکل نادرست مدیریت شوند، ممکن است تاریخ و ساعت برای کاربران مختلف متفاوت یا گیجکننده نمایش داده شود.
به همین دلیل در بسیاری از برنامههای واقعی، مخصوصاً برنامههای دارای کاربر بینالمللی، تاریخ در سمت سرور یا پایگاه داده با رویکرد UTC مدیریت شده و هنگام نمایش به زمان محلی کاربر تبدیل میشود.
مثال کاربردی: نمایش تاریخ فعلی
فرض کنید میخواهیم تاریخ امروز را در یک صفحه نمایش دهیم:
const today = new Date();
const year = today.getFullYear();
const month = today.getMonth() + 1;
const day = today.getDate();
console.log(`${year}/${month}/${day}`);چون ()getMonth از صفر شروع میشود، برای نمایش معمولی ماه باید 1 به آن اضافه کنیم.
مثال کاربردی: نمایش ساعت
const now = new Date();
const hours = now.getHours();
const minutes = now.getMinutes();
const seconds = now.getSeconds();
console.log(
`${hours}:${minutes}:${seconds}`
);ممکن است خروجی مثلاً به شکل زیر باشد:
14:05:09مثال کاربردی: اضافه کردن ۳۰ روز به تاریخ
const date = new Date();
date.setDate(date.getDate() + 30);
console.log(date);این روش میتواند برای محاسبه تاریخ انقضای یک اشتراک ساده استفاده شود.
مثلاً:
const startDate = new Date();
const expirationDate = new Date(startDate);
expirationDate.setDate(
expirationDate.getDate() + 30
);
console.log("Start:", startDate);
console.log("Expiration:", expirationDate);در این مثال از یک نکته مهم استفاده کردیم:
new Date(startDate)یک Date جدید ایجاد میکند تا تغییر روی expirationDate باعث تغییر مستقیم startDate نشود.
مثال کاربردی: بررسی منقضی شدن اشتراک
فرض کنیم تاریخ پایان اشتراک را داریم:
const expirationDate = new Date("2026-10-01");
const now = new Date();
if (now > expirationDate) {
console.log("Subscription expired");
} else {
console.log("Subscription is active");
}این الگو در سیستمهای اشتراک، فروشگاهها و سرویسهای آنلاین بسیار رایج است.
مثال کاربردی: محاسبه سن
میتوانیم برای محاسبه تقریبی سن از سال فعلی و سال تولد استفاده کنیم:
const birthYear = 1995;
const currentYear = new Date().getFullYear();
const age = currentYear - birthYear;
console.log(age);البته این روش فقط بر اساس سال محاسبه میکند.
برای محاسبه دقیق سن باید ماه و روز تولد نیز بررسی شوند.
یک نسخه دقیقتر:
const birthDate = new Date("1995-10-20");
const today = new Date();
let age = today.getFullYear() - birthDate.getFullYear();
const currentMonth = today.getMonth();
const birthMonth = birthDate.getMonth();
if (
currentMonth < birthMonth ||
(
currentMonth === birthMonth &&
today.getDate() < birthDate.getDate()
)
) {
age--;
}
console.log("Age:", age);در این مثال اگر هنوز روز تولد فرد در سال جاری نرسیده باشد، یک سال از مقدار سن کم میکنیم.
مثال کاربردی: شمارش معکوس ساده
فرض کنید یک مهلت داریم:
const deadline = new Date("2026-09-20T18:00:00");
const now = new Date();
const difference = deadline - now;
const hours = Math.floor(
difference / (1000 * 60 * 60)
);
console.log("Remaining hours:", hours);در پروژههای واقعی میتوان این مفهوم را توسعه داد و یک Countdown کامل با روز، ساعت، دقیقه و ثانیه ایجاد کرد.
یک تابع برای فرمت کردن تاریخ
برای جلوگیری از تکرار کد میتوانیم یک تابع ساده ایجاد کنیم:
function formatDate(date) {
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, "0");
const day = String(date.getDate()).padStart(2, "0");
return `${year}-${month}-${day}`;
}
const date = new Date();
console.log(formatDate(date));ممکن است خروجی:
2026-09-19باشد.
در این مثال از ()padStart استفاده کردهایم تا مثلاً ماه 5 به شکل:
05نمایش داده شود.
چرا نباید به فرمتهای مبهم تاریخ اعتماد کنیم؟
رشتههایی مانند:
new Date("09/10/2026");ممکن است در محیطها یا Localeهای مختلف باعث برداشت متفاوت از تاریخ شوند.
برای مثال مشخص نیست 09/10/2026 به معنی:
September 10است یا:
October 9به همین دلیل بهتر است تا حد امکان از قالبهای استاندارد استفاده کنیم:
new Date("2026-09-10");یا در موارد مناسب از constructor عددی استفاده کنیم:
new Date(2026, 8, 10);البته هنگام استفاده از تاریخهای رشتهای، موضوع Timezone نیز باید در نظر گرفته شود؛ مخصوصاً زمانی که تاریخ فقط به شکل YYYY-MM-DD نوشته شده و ساعت مشخص نشده است.
یک نکته مهم درباره Date و تغییرپذیری
شیء Date قابل تغییر است.
مثلاً:
const date = new Date();
const anotherDate = date;
anotherDate.setFullYear(2030);
console.log(date);ممکن است مشاهده کنید که date نیز تغییر کرده است.
دلیل این است که هر دو متغیر به همان شیء اشاره میکنند.
اگر یک کپی مستقل بخواهیم:
const date = new Date();
const anotherDate = new Date(date);
anotherDate.setFullYear(2030);
console.log(date);
console.log(anotherDate);در این حالت دو شیء مستقل داریم.
اشتباهات رایج در کار با Date
اشتباه اول: فراموش کردن صفر بودن شماره ماه
اشتباه:
new Date(2026, 9, 19);اگر هدف شما September باشد، این مقدار اشتباه است.
چون:
9 = Octoberبرای September باید:
new Date(2026, 8, 19);استفاده شود.
اشتباه دوم: اشتباه گرفتن getDate و getDay
getDate()روز ماه را برمیگرداند.
getDay()روز هفته را برمیگرداند.
اشتباه سوم: مقایسه مستقیم اشیای Date
این روش مناسب نیست:
date1 === date2بهتر است:
date1.getTime() === date2.getTime()را استفاده کنیم.
اشتباه چهارم: نادیده گرفتن Timezone
وقتی برنامه شما با کاربران مناطق زمانی مختلف کار میکند، نباید تصور کنید تاریخ و ساعت یک کاربر دقیقاً همان چیزی است که کاربر دیگری مشاهده میکند.
برای سیستمهای بینالمللی باید Local Time و UTC را بهدرستی مدیریت کنید.
اشتباه پنجم: تغییر ناخواسته یک Date
کد زیر:
const expirationDate = startDate;
expirationDate.setDate(
expirationDate.getDate() + 30
);در واقع startDate را نیز تغییر میدهد.
اگر کپی مستقل میخواهیم:
const expirationDate = new Date(startDate);استفاده میکنیم.
خلاصه متدهای مهم Date
متد | کاربرد |
|---|---|
| ایجاد تاریخ فعلی |
| دریافت Timestamp فعلی |
| دریافت سال |
| دریافت ماه از 0 تا 11 |
| دریافت روز ماه |
| دریافت روز هفته |
| دریافت ساعت محلی |
| دریافت دقیقه |
| دریافت ثانیه |
| دریافت میلیثانیه |
| دریافت Timestamp |
| تغییر سال |
| تغییر ماه |
| تغییر روز |
| تغییر ساعت |
| تبدیل به قالب ISO |
| نمایش تاریخ با Locale |
| نمایش تاریخ و زمان با Locale |
| دریافت اجزای تاریخ بر اساس UTC |
تمرینها
تمرین ۱
برنامهای بنویسید که تاریخ و ساعت فعلی را نمایش دهد.
خروجی باید شامل این موارد باشد:
Year
Month
Day
Hour
Minute
Secondتمرین ۲
یک تاریخ مشخص ایجاد کنید و سال، ماه و روز آن را جداگانه چاپ کنید.
تمرین ۳
تاریخ فعلی را دریافت کنید و ۷ روز به آن اضافه کنید.
تمرین ۴
دو تاریخ ایجاد کنید و مشخص کنید کدام تاریخ زودتر است.
تمرین ۵
فاصله بین دو تاریخ را بر حسب روز محاسبه کنید.
تمرین ۶
تابعی به نام:
formatDate()بنویسید که یک Date دریافت کند و تاریخ را به شکل زیر برگرداند:
YYYY-MM-DDتمرین ۷
تاریخ انقضای یک اشتراک را در یک متغیر قرار دهید و بررسی کنید که آیا اشتراک منقضی شده است یا خیر.
چالش عملی
یک برنامه ساده برای محاسبه زمان باقیمانده تا یک Deadline ایجاد کنید.
برنامه باید:
تاریخ فعلی را دریافت کند.
یک تاریخ Deadline داشته باشد.
فاصله بین زمان فعلی و Deadline را محاسبه کند.
مقدار باقیمانده را بر حسب:
روز
ساعت
دقیقه
ثانیه
نمایش دهد.
اگر Deadline گذشته بود، پیام مناسبی نمایش دهد.
برای مثال:
Time Remaining:
2 Days
5 Hours
20 Minutes
15 Secondsجمعبندی
در این مقاله با Date و Time در جاوااسکریپت آشنا شدیم و یاد گرفتیم چگونه تاریخ و زمان را ایجاد و مدیریت کنیم.
مهمترین موضوعاتی که یاد گرفتیم عبارتاند از:
ساخت تاریخ با
new Date()دریافت زمان فعلی با
Date.now()کار با Timestamp
دریافت سال، ماه، روز و زمان
تغییر اجزای تاریخ
اضافه و کم کردن روز، ماه و سال
مقایسه دو تاریخ
محاسبه فاصله بین تاریخها
تبدیل میلیثانیه به ثانیه، دقیقه، ساعت و روز
استفاده از
toISOString()استفاده از
toLocaleDateString()وtoLocaleString()تفاوت Local Time و UTC
نکات مهم مربوط به Timezone
محاسبه سن و زمان باقیمانده
جلوگیری از تغییر ناخواسته اشیای
Date
یکی از مهمترین نکاتی که باید همیشه به خاطر داشته باشید این است که ماه در جاوااسکریپت از صفر شروع میشود:
January = 0
February = 1
...
December = 11همچنین در پروژههای واقعی باید هنگام کار با تاریخهای بینالمللی، Timezone و UTC را جدی بگیریم.
نظرات
هنوز نظری ثبت نشده است.