از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش مقایسه رشته های زمانی در فرمت HH:MM:SS با جاوا اسکریپت
سرفصلهای مطلب
معرفی
زمان در هر بخش از زندگی ما تنیده شده است، چه به صورت مجازی و چه به معنای واقعی کلمه. به همین دلیل، اغلب در برنامه نویسی باید با آن مقابله کنیم. می تواند طول بکشد روی بسیاری از فرمت ها، یکی از رایج ترین آنها HH:MM:SS است. این بایت به ما کمک می کند تا روش مقایسه رشته های زمانی در جاوا اسکریپت را بیابیم و به شما درک عملی از روش انجام آن ارائه می دهد.
زمان قالب بندی رشته ای
زمان اغلب به عنوان یک رشته در قالب HH:MM:SS نشان داده می شود، زیرا ما آن را در دنیای واقعی اینگونه می بینیم زیرا این قالب نسبتاً جهانی و قابل درک است. به عنوان مثال، “13:45:30” ساعت 1:45:30 بعد از ظهر را در قالب 24 ساعته نشان می دهد. با این حال، شایان ذکر است که جاوا اسکریپت ذاتاً این قالب را درک نمی کند. برای زبان، این فقط یک رشته است مانند رشته های دیگر. بنابراین، چگونه می توانیم جاوا اسکریپت را بفهمیم و این رشته های زمانی را مقایسه کنیم؟ بیایید این را بررسی کنیم.
چرا رشته های زمانی را مقایسه می کنیم؟
سناریوهای متعددی وجود دارد که مقایسه زمان در قالب رشته می تواند مفید باشد. شاید شما در حال ساخت یک برنامه ردیابی زمان هستید، یا شاید در حال کار هستید روی یک سیستم زمان بندی که نیاز به مقایسه زمان ها برای تعیین ترتیب رویدادها دارد. مقایسه رشته های زمانی در جاوا اسکریپت یک کار معمول و ضروری در بسیاری از پروژه های برنامه نویسی است.
روش مقایسه رشته های زمانی
روش های مختلفی برای مقایسه رشته های زمانی در جاوا اسکریپت وجود دارد. دو متداول ترین روش شامل استفاده از شیء تاریخ یا روش های مقایسه رشته است. بیایید به هر دو این روش ها بپردازیم.
استفاده از شیء تاریخ برای مقایسه
شی Date در جاوا اسکریپت یک شی داخلی است که روش هایی را برای کار با تاریخ و زمان ارائه می دهد. می توانید از آن برای ایجاد یک شی Date از یک رشته زمان استفاده کنید و سپس این اشیاء را با هم مقایسه کنید.
در اینجا یک مثال است:
let time1 = new Date(`1970-01-01T${"13:45:30"}Z`);
let time2 = new Date(`1970-01-01T${"14:45:30"}Z`);
if (time1 > time2) {
console.log("Time1 is later");
} else if (time1 < time2) {
console.log("Time2 is later");
} else {
console.log("Both times are equal");
}
در این مثال، ما اشیاء Date را از رشته های زمانی خود ایجاد می کنیم. ما از یک تاریخ ثابت (اول ژانویه 1970) استفاده می کنیم و رشته های زمانی خود را به آن اضافه می کنیم. تاریخ واقعی استفاده واقعاً مهم نیست، تا زمانی که آنها یکسان باشند، زیرا ما واقعاً فقط به زمان اهمیت می دهیم.
“Z” در پایان مشخص می کند که این UTC است. سپس به سادگی اشیاء Date را با استفاده از عملگرهای مقایسه جاوا اسکریپت مقایسه می کنیم.
توجه داشته باشید: هنگام مقایسه اشیاء Date، جاوا اسکریپت تاریخ ها را به نمایش عددی آنها تبدیل می کند (تعداد میلی ثانیه از 1 ژانویه 1970) و این اعداد را مقایسه می کند.
این روش برای اکثر موارد استفاده به خوبی جواب می دهد. با این حال، اگر فقط زمان ها را با هم مقایسه کنید، ممکن است بیش از حد باشد روی در همان روز و نیازی به حساب کردن تاریخ یا مناطق زمانی ندارید. در این صورت، ممکن است بخواهید از روشهای مقایسه رشتهها استفاده کنید که در بخش بعدی این بایت به آنها خواهیم پرداخت.
مقایسه رشته های زمانی با استفاده از روش های رشته
در جاوا اسکریپت، روش دیگری برای مقایسه رشته های زمانی استفاده از روش های رشته ای است. این رویکرد شامل تقسیم رشته زمانی به ساعت، دقیقه و ثانیه و سپس مقایسه این بخشها است. بیایید ببینیم چگونه می توانیم این کار را انجام دهیم.
let time1 = "10:30:00";
let time2 = "11:30:00";
let time1Parts = time1.split(":");
let time2Parts = time2.split(":");
if (time1Parts(0) > time2Parts(0)) {
console.log(time1 + " is greater than " + time2);
} else if (time1Parts(0) < time2Parts(0)) {
console.log(time1 + " is less than " + time2);
} else {
// Hours are equal, compare minutes
if (time1Parts(1) > time2Parts(1)) {
console.log(time1 + " is greater than " + time2);
} else if (time1Parts(1) < time2Parts(1)) {
console.log(time1 + " is less than " + time2);
} else {
// Minutes are equal, compare seconds
console.log(time1Parts(2) > time2Parts(2) ? time1 + " is greater than " + time2 : time1 + " is less than " + time2);
}
}
در مثال بالا، رشته های زمانی با استفاده از علامت به آرایه ها تقسیم می شوند split
روش. سپس هر قسمت از زمان (ساعت، دقیقه و ثانیه) مقایسه می شود.
اما آیا واقعاً به همه اینها نیاز داریم؟ if
بیانیه؟ قطعا نه. ما می توانیم از مقایسه رشته های پایه استفاده کنیم روی رشته تمام وقت این به این دلیل است که مقایسههای رشتهای از ترتیب اعداد پیروی میکنند، و بنابراین (با استفاده از مثال بالا) رشته “11:30:00” “بزرگتر” از رشته دیگر، “10:30:00” است:
let time1 = "10:30:00";
let time2 = "11:30:00";
if (time1 > time2) {
console.log(time1 + " is greater than " + time2);
} else {
console.log(time1 + " is less than " + time2);
}
مشکلات بالقوه
فقط حواستان باشد که این روش ها خالی از اشکال نیستند. تصور کنید اگر رشته های زمانی دارید که فرمت درستی ندارند یا حاوی مقادیر نامعتبر هستند (مانند “25” برای ساعت ها)، مقایسه نتایج نادرستی به همراه خواهد داشت.
این روش همچنین مقایسه رشته های زمانی را در قالب های مختلف انجام نمی دهد. مقایسه یک رشته زمانی در قالب “HH:MM:SS” با یک رشته زمانی در قالب “HH:MM” باعث ایجاد مشکل می شود.
مقایسه رشته های زمانی در فرمت های مختلف
بنابراین، چگونه رشته های زمانی را در قالب های مختلف مقایسه کنیم؟ خوب، ما باید قبل از مقایسه رشته های زمانی را به یک فرمت معمولی تبدیل کنیم. مقایسه دستی به این صورت خواهد بود:
let time1 = "10:30";
let time2 = "11:30:00";
let time1Parts = time1.split(":");
let time2Parts = time2.split(":");
// convert time1 to 'HH:MM:SS' format
if (time1Parts.length == 2) {
time1Parts.push("00");
}
if (time1Parts(0) > time2Parts(0)) {
console.log(time1 + " is greater than " + time2);
} else if (time1Parts(0) < time2Parts(0)) {
console.log(time1 + " is less than " + time2);
} else {
// hours are equal, compare minutes
if (time1Parts(1) > time2Parts(1)) {
console.log(time1 + " is greater than " + time2);
} else if (time1Parts(1) < time2Parts(1)) {
console.log(time1 + " is less than " + time2);
} else {
// minutes are equal, compare seconds
console.log(time1Parts(2) > time2Parts(2) ? time1 + " is greater than " + time2 : time1 + " is less than " + time2);
}
}
برای استفاده از Date
شی، شما باید کاری مشابه انجام دهید تا بتوانید زمان را تجزیه کنید، یا می توانید بخش های زمان را تقسیم کرده و آن ها را تنظیم کنید. روی را Date
بر این اساس اعتراض کنید.
نتیجه
مقایسه رشتههای زمانی در جاوا اسکریپت با استفاده از روشهای مختلفی امکانپذیر است که هر کدام مزایا و معایب خاص خود را دارند. در حالی که Date
شی راهحل بهتری ارائه میکند، استفاده از روشهای رشتهای نیز میتواند یک رویکرد ساده باشد، با فرض اینکه زمانها در قالب یکسانی هستند و حاوی مقادیر معتبر هستند.
در این بایت، روش مقایسه رشتههای زمانی با استفاده از روشهای رشته، مشکلات احتمالی که ممکن است با آنها مواجه شوید و روش مقایسه رشتههای زمانی در قالبهای مختلف را توضیح دادهایم.
(برچسبها برای ترجمه)# جاوا اسکریپت
منتشر شده در 1403-01-31 17:17:04