چند ثانیه از امروز گذشته است؟
اهمیت: 5
تابع getSecondsToday()
را بنویسید که تعداد ثانیههایی که از شروع روز گذشته است را برگرداند.
برای مثال، اگر الان 10:00 am
(قبل از ظهر) باشد و ساعت تابستانی هم وجود نداشته باشد، سپس داریم:
getSecondsToday() == 36000 // (3600 * 10)
تابع باید به ازای هر روزی کار کند. یعنی اینکه نباید برای «امروز» کد اختصاصی داشته باشد.
برای دریافت تعداد ثانیهها، ما میتوانیم با استفاده از روز کنونی و ساعت 00:00:00 یک تاریخ بسازیم، سپس آن را از «الان» کم کنیم.
تفاضل برابر با تعداد میلیثانیهها از شروع امروز است که ما باید برای دریافت ثانیهها آن را بر 1000 تقسیم کنیم:
function getSecondsToday() {
let now = new Date();
// با استفاده از سال/ماه/روز کنونی یک شیء بسازید
let today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
let diff = now - today; // تفاضل به میلیثانیه
return Math.round(diff / 1000); // ایجاد ثانیه
}
alert( getSecondsToday() );
یک راه حل جایگزین میتواند این باشد که ساعت/دقیقه/ثانیه را دریافت کنیم و آنها را به ثانیه تبدیل کنیم:
function getSecondsToday() {
let d = new Date();
return d.getHours() * 3600 + d.getMinutes() * 60 + d.getSeconds();
}
alert( getSecondsToday() );