Сколько секунд уже прошло сегодня?
Для вывода достаточно сгенерировать объект Date , соответствующий началу дня, т.е. «сегодня» 00 часов 00 минут 00 секунд, и вычесть его из текущей даты.
Полученная разница – это как раз количество миллисекунд от начала дня, которое достаточно поделить на 1000 , чтобы получить секунды:
function getSecondsToday() { var now = new Date();
// создать объект из текущей даты, без часов‐минут‐секунд
var today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
var diff = now ‐ today; // разница в миллисекундах return Math.floor(diff / 1000); // перевести в секунды
}
alert( getSecondsToday() );
Альтернативное решение – получить часы/минуты/секунды и преобразовать их все в секунды:
function getSecondsToday() { var d = new Date();
return d.getHours() * 3600 + d.getMinutes() * 60 + d.getSeconds();
};
К условию
Сколько секунд ‑ до завтра?
Для получения оставшихся до конца дня миллисекунд нужно из «завтра 00 ч 00 мин 00 сек» вычесть текущее время. Чтобы сгенерировать «завтра» – увеличим текущую дату на 1 день:
function getSecondsToTomorrow() { var now = new Date();
// создать объект из завтрашней даты, без часов‐минут‐секунд
var tomorrow = new Date(now.getFullYear(), now.getMonth(), now.getDate()+1);
var diff = tomorrow ‐ now; // разница в миллисекундах return Math.round(diff / 1000); // перевести в секунды
}
К условию
Вывести дату в формате дд.мм.гг
Получим компоненты один за другим.
День можно получить как date.getDate() . При необходимости добавим ведущий ноль:
var dd = date.getDate(); if (dd < 10) dd = '0' + dd;
date.getMonth() возвратит месяц, начиная с нуля. Увеличим его на 1:
var mm = date.getMonth() + 1; // месяц 1‐12 if (mm < 10) mm = '0' + mm;
date.getFullYear() вернет год в 4‑значном формате. Чтобы сделать его двузначным – воспользуемся оператором взятия остатка '%' :
var yy = date.getFullYear() % 100; if (yy < 10) yy = '0' + yy;
Заметим, что год, как и другие компоненты, может понадобиться дополнить нулем слева, причем возможно что yy == 0 (например, 2000 год). При сложении со строкой 0+'0' == '00' , так что будет все в порядке.
Полный код:
function formatDate(date) {
var dd = date.getDate(); if (dd < 10) dd = '0' + dd;
var mm = date.getMonth() + 1; if (mm < 10) mm = '0' + mm;
var yy = date.getFullYear() % 100; if (yy < 10) yy = '0' + yy;
return dd + '.' + mm + '.' + yy;
}
var d = new Date(2014, 0, 30); // 30 Янв 2014 alert( formatDate(d) ); // '30.01.14'
Открыть решение с тестами в песочнице.
К условию
Do'stlaringiz bilan baham: |