Yutex - Платный хостинг PHP.
Advego.ru - система покупки и продажи контента для сайтов, форумов и блогов

Технические фишки инфобизнеса 2014

Статьи для сайтов!!!
Методы объекта Date - Дата и Время Практика - Метод getTime Интервал времени - setInterval и clearInterval

Объект Date - Метод getTime - Точка отсчета от 1-го января 1970 года - Число миллисекунд

Работа с датами в javascript - Объект Date

Урок №2 Практика - Метод getTime

Количество просмотров: 599

Продолжаем работать с объектом Date. Здесь мы познакомимся с методом getTime.

Метод getTime возвращает количество МиллиСекунд, прошедших с полночи 1-го января 1970 года до настоящего времени (если иная дата не указана в параметрах объекта Date). Этот стандарт (точка отсчёта) был когда-то принят программистами. Для чего? Об этом и не только Вы узнаете из этого урока.

Метод getTime - 1-го января 1970 года - Возвращает количество миллисекунд

Метод getTime - 1-го января 1970 года - Возвращает количество миллисекунд

Сначала, при помощи метода getTime объекта Date мы узнаем, сколько миллисекунд прошло с 1-го января 1970 года до настоящего времени.

<script type="text/javascript">

var now = new Date();

var milliSeconds = now.getTime();

document.write(milliSeconds);

</script>

В результате, осенью 2017 года, я получил число из тринадцати цифр 1506710842947. Идем далее...

1-го января 1970 года - Количество секунд и минут. Часы и Дни

1-го января 1970 года - Количество секунд и минут. Часы и Дни

Для тех, кто не знает, в одной секунде содержится 1000 миллисекунд.

Ну а то, что в одной минуте содержится 60 секунд, скорее всего, известно каждому.

Исходя из этого при помощи метода getTime, узнаем: сколько секунд и минут прошло с 1-го января 1970 года до настоящего времени.

<script type="text/javascript">

var now = new Date();

var seconds = now.getTime() / 1000;

var minutes = now.getTime() / (1000 * 60);

document.write(seconds + " - количество Секунд <br>");

document.write(minutes + " - количество Минут");

</script>

Количество прошедших с указанной даты часов и дней также вычислить не сложно. Смотрите пример ниже...

<script type="text/javascript">

var now = new Date();

var hours = now.getTime() / (1000 * 60 * 60);

var days = now.getTime() / (1000 * 60 * 60 * 24);

document.write(hours + " - количество Часов <br>");

document.write(Math.round(days) + " - количество Дней");

</script>

И здесь же при помощи метода round объекта Math количество дней было округлено до целого значения.

Метод getTime - 1-го января 1970 года - Практический пример

Метод getTime - 1-го января 1970 года - Практический пример

Теперь, после того, как мы выяснили, сколько времени (в различных единицах измерения) проходит с 1-го января 1970 года до настоящего момента, можно рассмотреть практический пример применения метода getTime.

Например, нужно выяснить, сколько дней осталось до 1-го января 2020 года.

Сначала узнаем, сколько дней прошло с 1-го января 1970 года до настоящего времени.

Потом посчитаем количество дней с 1-го января 1970 года до 1-го января 2020 года.

Третьим шагом вычислим разницу и получим число дней от сегодняшнего до первого дня 2020 года.

Итак, как Вы помните, объект Date() по умолчанию содержит текущую дату и не содержит параметров (т.к. при этом дату явно не указывают).

Но чтобы узнать число дней до 1-го января 2020 года, необходимо именно эту дату указать в параметрах объекта следующим образом:

var now = new Date(); /* Объект Date по умолчанию */

var now = new Date(2020,0,1,0,0); /* Объект Date содержит Дату */

2020 - год

0 - месяц (январь)

1 - число месяца

0 - час

0 - минута

и т.д. можно указать секунду и даже миллисекунду

Реализуем поставленную задачу в javascript-коде.

<script type="text/javascript">

var now = new Date(); /* Объект Date ориентируется на текущую Дату */
var from_1970 = now.getTime() / (1000 * 60 * 60 * 24); /* Узнаем кол-во дней */
document.write(Math.round(from_1970) + " - число дней от 1970 года до Настоящего момента <br>");

var newYear = new Date(2020,0,1); /* Объект Date ориентируется на указанную Дату */
var from_to = newYear.getTime() / (1000 * 60 * 60 * 24); /* Узнаем кол-во дней */
document.write(Math.round(from_to) + " - число дней от 1970 года до 1-го января 2020 года <br>");

document.write(Math.round(from_to) - Math.round(from_1970) + " - дней осталось до 1-го января 2020 года <br>");

var dayWeek = newYear.getDay(); /* Узнаем номер дня недели для 1-го января 2020 г. */
var days = ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница","Суббота"]; /* Массив с днями недели */
document.write("Это будет - " + days[dayWeek]);

</script>

В этом примере помимо выполнения поставленной задачи, мы узнали и вывели на экран день недели (при помощи метода getDay и массива дней недели из 2-го домашнего задания прошлого урока), на который приходится 1-го января 2020 г.

Домашнее задание - метод getTime объекта Date

Домашнее задание - метод getTime объекта Date

Пора выполнить домашнее задание по работе с методами объекта Date.

Подсказка для тех, кто захочет выполнить его самостоятельно: в нем нужно будет создавать объект Date для НЕ сегодняшней даты и в качестве параметра указать определенное число миллисекунд (об этом шла речь в предыдущем пункте).

Написать функцию, которая выводит на экран дату, которая наступит через n дней от сегодняшней.
n - количество дней, которое нужно запросить у пользователя при загрузке страницы.
Это значение передаете в функцию в качестве параметра.

При этом итоговую дату надо вывести в нормальном формате на русском языке.
Например, так (пример для ввода числа 79):

Через 79 дней будет вот такая дата:
День недели: Воскресенье
Число: 10
Месяц: Октябрь
Год: 2010

При этом пользователь должен ввести число от 1 до 1000.
Если он не попал в интервал или ввел не число, то надо вывести ошибку.
Проверку можно осуществлять за пределами функции.

Подсказка. Если задание кажется сложным, не спешите смотреть ответ.
Постарайтесь разбить задачу на как можно более мелкие шажки и для начала попробуйте написать код просто для конкретного числа дней, вообще не используя функцию.

<script type = "text/javascript">

var months = ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"]; /* Массив месяцев */
var days = ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница","Суббота"]; /* Массив дней недели */

var day_now = new Date(); /* Объект Date для текущей даты */
var milliNow = day_now.getTime(); /* Число миллисекунд от 1-го января 1970 года до текущей даты */

function now_date(N) /* Функция с одним параметром */
{
var day_after_N = new Date(1000 * 60 * 60 * 24 * N); /* Объект Date для даты через N дней после 1-го января 1970 */
var milliN = day_after_N.getTime(); /* Число миллисекунд в N днях */

var milliNowPlusN = new Date(milliNow + milliN); /* Объект Date для даты через N дней после текущей */

document.write(N + " - через указанное Вами число дней будет следующая ДАТА: <p>");
document.write("Год: " + milliNowPlusN.getFullYear() + "<br>");
document.write("Месяц: " + months[milliNowPlusN.getMonth()] + "<br>");
document.write("День недели: " + days[milliNowPlusN.getDay()] + "<br>");
document.write("Число: " + milliNowPlusN.getDate() + "<br>");
}

var user = prompt("Через какое количество дней от 1 до 1000 Вам интересно знать Дату?"); /* Запрос для пользователя */
var n = Math.round(user); /* Округляем введенное пользователем число */

if (n > 1 && n < 1000) /* Если указанное число находится в диапазоне от 1 до 1000, то... */
{
now_date(n); /* Вызываем функцию */
}
else
{
document.write("Вы указали НЕ число, либо число за пределами диапазона от 1 до 1000")
}

</script>

Условие в этом решении можно было составить немного иначе:

<script type="text/javascript">

if (n > 1000 || n < 1 || isNaN(n)) /* Если указанное число НЕ находится в диапазоне от 1 до 1000 ИЛИ оно НЕ число, то... */
{
document.write("Вы указали НЕ число, либо число за пределами диапазона от 1 до 1000")
}
else
{
now_date(n); /* Вызываем функцию */
}

</script>

Результат будет тот же. Только в первом случае применялось условие И, а здесь условие ИЛИ и, кроме этого, введена проверка на тот случай, если n - это не число при помощи функции isNaN.

Объект Date - для НЕ сегодняшней даты - Параметр в Миллисекундах

Объект Date - для НЕ сегодняшней даты - Параметр в Миллисекундах

В очередной раз напомним, что по умолчанию объект Date() создается без параметров, то есть для текущей даты.

В предыдущем пункте он создавался для даты 1-го января 2020 года. Поэтому был указан с параметрами в виде: Date(2020,0,1).

В 1-м уроке мы также говорили о том, как создать объект Date для НЕ сегодняшней даты.

Но есть и другой способ создания объекта Date для НЕ сегодняшней даты. Для этого в качестве его параметра нужно указать число Миллисекунд до нужной даты.

Отсчет указанного времени будет вестись от полночи 1-го января 1970 года.

<script type="text/javascript">

var milliS = new Date(1000 * 60 * 60 * 24); /* Параметр объекта - Число миллисекунд в сутки */

document.write(milliS);

</script>

Итак, в этом примере был создан объект Date для даты 2-го января 1970 года. Для этого в его параметрах было указано число миллисекунд в сутках. Отсчет велся от 1-го января 1970 года. При этом была учтена разница в часовых поясах GMT+0300.

Главная Изучаем JavaScript Практика - Метод getTime Интервал времени - setInterval и clearInterval

Ваши комментарии к уроку:

Комментариев нет...

Добавить комментарий:

Ваше Имя:*
Комментарий:*
Ответьте на вопрос: *
Сколько дней в Високосном году?
* - поля обязательные для заполнения.
JavaScript
Частота просмотра уроков
Дизайн сайтов
ПОИСК ПО САЙТУ:

Моё имя Антон. Связаться со мною Вы можете по e-mail: averagev@mail.ru