Web appOpen in Telegram

Post⏰ گاهی نیاز داریم دو بازه زمانی رو با هم مقایسه کنیم یا اختلافشون رو محاسبه کنیم. جاوااسکریپت Date داره ولی برای بازه‌ ز…

31 May 2026
ᴀ
ᴀᴍɪʀᴍᴀsᴏᴜᴅ
⏰ گاهی نیاز داریم دو بازه زمانی رو با هم مقایسه کنیم یا اختلافشون رو محاسبه کنیم. جاوااسکریپت Date داره ولی برای بازه‌ زمانی کافی نیست. اینجا این روش رو استفاده میکنیم : ساختن یه TimeInterval با استفاده از همون Date ولی با اضافه کردن متدهای جدید💡 ایده اصلی اینه که به جای ارث‌ بری کلاس‌محور، یه تابع بنویسیم که: - یه Date جدید میسازیم - متدهای مورد نیازمون رو بهش اضافه میکنیم - همون رو برمیگردونیم var TimeInterval = function(){ var obj = new Date(0); if(arguments.length === 1){ obj.setTime(arguments[0]); } else if(arguments.length > 1){ var ms = (arguments[0] || 0) * 86400000 + (arguments[1] || 0) * 3600000 + (arguments[2] || 0) * 60000 + (arguments[3] || 0) * 1000 + (arguments[4] || 0); obj.setTime(ms); } obj.add = function(t){ if(t.getTime){ this.setTime(this.getTime() + t.getTime()); } }; obj.subtract = function(t){ if(t.getTime){ this.setTime(this.getTime() - t.getTime()); } }; obj.equals = function(t){ return this.getTime() === t.getTime(); }; return obj; } function diff(t1, t2){ return TimeInterval(t1.getTime() - t2.getTime()); } ساخت با پارامترهای مختلف (بدون overloading): تابع TimeInterval می‌تونه ورودی‌های مختلف قبول کنه: TimeInterval(3600000) // 1 ساعت به میلی‌ثانیه TimeInterval(1,0,0) // 1 ساعت (ساعت، دقیقه، ثانیه) TimeInterval(1,2,0,0) // 1 روز و 2 ساعت TimeInterval(1,2,0,0,500) // 1 روز و 2 ساعت و 500 میلی‌ثانیه با چک کردن arguments.length می‌فهمیم کاربر چه چیزی داده. اینو هم برای نمایش خروجی (override کردن toString) به تابع TimeIntervalاضافه میکنیم: obj.toString = function(){ var days = Math.floor(this.getTime() / 86400000); return days + " Day(s) " + this.getUTCHours() + ":" + this.getUTCMinutes() + ":" + this.getUTCSeconds(); } مثال از استفاده: var interval1 = TimeInterval(1, 2, 30, 0, 500); // 1 روز, 2 ساعت, 30 دقیقه, 500 میلی‌ثانیه var interval2 = TimeInterval(3600000 * 25); // 25 ساعت (معادل 1 روز و 1 ساعت) interval1.add(interval2); var difference = diff(interval1, interval2); // 1 Day(s) 2:30:0 توی این روش TimeInterval از Date ارث بری نکرده. اومدیم یه Date ساختیم، بعد متدهای جدید روش ریختیم. این روش رو توی جاوااسکریپت بهش میگن Object Augmentation و خیلی تمیز کار میکنه. اگه توی پروژه‌ هاتون نیاز به جمع و تفریق زمان یا محاسبه اختلاف بازه های زمانی دارین، این روش هم سادست هم انعطاف‌پذیره، نیازی به هیچی نداره و خود جاوااسکریپت با یه کم خلاقیت جواب میده. #js #timeinterval ☕️ Telegram | Website | Discord
8 · 2.2K ·

Nearby in the feed

ᴀᴀᴍɪʀᴍᴀsᴏᴜᴅ🔍 براتون پیش اومده بخواید تفاوت کدی که خودتون نوشتید با یه کد شبیه به کد خودتون باشه مثلا راه حلی که توی استک آورفلو هست یا هوش مصنوعی بهتون گفته مقایسه کنید و ᴀᴀᴍɪʀᴍᴀsᴏᴜᴅ😢😳 #fun ☕️ Telegram | Website | Discord
this message
ᴀᴀᴍɪʀᴍᴀsᴏᴜᴅ😏😏 #fun ☕️ Telegram | Website | Discord--𝙈𝘼𝙏𝙄𝙉-بریم یکم راجب زبانی حرف بزنیم که بهش کم توجهی شده زبان برنامه‌نویسی (لوا 👩‍💻 Lua) یکی از شاهکارهای دنیای نرم‌افزار که با هدف سادگی، سرعت زیاد و حجم بسیار کم طرا
ککداکسپلور | CodeExploreکداکسپلور | CodeExplore@CodeExplore · channel · Tech
9 201subscribers1 382average post reach
Venue feed Open in Telegram

An open public feed from the search index ChatCrawler — “Google for public Telegram”; refreshed as the venue is crawled. Times are UTC.

Public content only, official Telegram API. About · FAQ · What we do not do · Remove a page · Catalog · Search · How we count