Ð´Ð»Ñ Epic Skills
DateÐ JavaScript даÑа опÑеделÑеÑÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑвом миллиÑекÑнд,
пÑоÑедÑиÑ
Ñ 1 ÑнваÑÑ 1970 года.
ÐÐ»Ñ ÑабоÑÑ Ñ Ð´Ð°Ñой и вÑеменем пÑименÑеÑÑÑ Ð²ÑÑÑоеннÑй обÑÐµÐºÑ Date. ÐÑÐ¾Ñ Ð¾Ð±ÑÐµÐºÑ Ð½Ðµ Ð¸Ð¼ÐµÐµÑ ÑвойÑÑв, но Ð¾Ð±Ð»Ð°Ð´Ð°ÐµÑ Ð½ÐµÑколÑкими меÑодами, позволÑÑÑими ÑÑÑанавливаÑÑ Ð¸ изменÑÑÑ Ð´Ð°ÑÑ Ð¸ вÑемÑ.
ÐÑи Ñоздании без аÑгÑменÑов обÑÐµÐºÑ Ð´Ð°ÑÑ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ ÑекÑÑÑÑ Ð´Ð°ÑÑ:
new Date();
ÐÑи Ñоздании Ñ ÐµÐ´Ð¸Ð½ÑÑвеннÑм аÑгÑменÑом в виде ÑиÑла, даÑа бÑÐ´ÐµÑ Ñавна колиÑеÑÑÐ²Ñ Ð¼Ð¸Ð»Ð»Ð¸ÑекÑнд (1/1000 ÑекÑндÑ), пÑоÑедÑÐ¸Ñ Ñ 1 ÑнваÑÑ 1970 года GMT+0.
new Date(0); // наÑало UNIX-ÑпоÑ
и
ÐÑибавим 24 ÑаÑа к даÑе наÑала UNIX-ÑпоÑ
и
var milliseconds = 24 * 60 * 60 * 1000;
var unixZero = new Date(0);
var unixDay = new Date(milliseconds);
ÐаÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑоздаÑÑ, иÑполÑзÑÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½ÑÑ Ð´Ð°ÑÑ.
new Date(2017, 6, 3, 19, 0, 0, 0);
ÐÑибавим 24 ÑаÑа к даÑе наÑала UNIX-ÑпоÑ
и
var milliseconds = 24 * 60 * 60 * 1000;
var unixZero = new Date(0);
var unixDay = new Date(milliseconds);
Ðозможно Ñакже ÑоздаÑÑ Ð´Ð°ÑÑ Ð¸Ð· ÑÑÑоки в ÑпеÑиалÑном ÑоÑмаÑе пÑи помоÑи меÑода Date.parse: YYYY-MM-DDTHH:mm:ss.sssZ
â YYYY-MM-DD â даÑа в ÑоÑмаÑе год-меÑÑÑ-денÑ.
â ÐÑква T иÑполÑзÑеÑÑÑ ÐºÐ°Ðº ÑазделиÑелÑ.
â HH:mm:ss.sss â вÑемÑ: ÑаÑÑ-минÑÑÑ-ÑекÑндÑ-миллиÑекÑндÑ.
â ЧаÑÑÑ Z обознаÑÐ°ÐµÑ Ð²ÑеменнÑÑ Ð·Ð¾Ð½Ñ â в ÑоÑмаÑе +-hh:mm, либо Ñимвол Z, обознаÑаÑÑий UTC. Ðо ÑÑандаÑÑÑ ÐµÑ Ð¼Ð¾Ð¶Ð½Ð¾ не ÑказÑваÑÑ, Ñогда UTC, но в Safari Ñ ÑÑим оÑибка, Ñак ÑÑо лÑÑÑе ÑказÑваÑÑ Ð²Ñегда.
Также Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ ÑкоÑоÑеннÑе ваÑианÑÑ, напÑÐ¸Ð¼ÐµÑ YYYY-MM-DD или YYYY-MM или даже ÑолÑко YYYY.
ÐеÑод Date.parse(datestring) ÑазбиÑÐ°ÐµÑ ÑÑÑÐ¾ÐºÑ datestring в Ñаком ÑоÑмаÑе и возвÑаÑÐ°ÐµÑ ÑооÑвеÑÑÑвÑÑÑее ей колиÑеÑÑво миллиÑекÑнд. ÐÑли ÑÑо невозможно, Date.parse возвÑаÑÐ°ÐµÑ NaN.
new Date('2017');new Date('2017-06-03');new Date('2017-06-03T19:10:05.101+03:00');new Date('2017-06-03T19:10:05.101Z');Ðожно полÑÑиÑÑ ÐºÐ¾Ð»-во миллиÑекÑнд ÑÐ¿Ð¾Ñ Ð¸
var now = new Date();
now.getTime(); //
Ðо еÑÑÑ ÑпоÑоб еÑÑ Ð¿ÑоÑе!
Date.now(); //
ÐÑÐµÐ½Ñ Ñдобно оказÑваеÑÑÑ Ð¾Ð¿ÐµÑиÑоваÑÑ Ð´Ð°Ñами в миллиÑекÑÐ½Ð´Ð°Ñ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð½Ð¾Ð²ÑÑ Ð´Ð°Ñ. ÐапÑимеÑ, можно вÑÑиÑлиÑÑ Ð´Ð°ÑÑ "ÑеÑез год"
var oneYear = 12 * 31 * 24 * 60 * 60 * 1000;
var datePlusYear = new Date(Date.now() + oneYear);
//
ÐеÑодами обÑекÑа Date можно полÑÑаÑÑ Ð¾ÑделÑно знаÑÐµÐ½Ð¸Ñ Ð´Ð°Ñе:
getDay - Ð´ÐµÐ½Ñ Ð½ÐµÐ´ÐµÐ»Ð¸, Ñелое ÑиÑло Ð¾Ñ 0 (воÑкÑеÑенÑе) до 6 (ÑÑббоÑа).getDate - Ð½Ð¾Ð¼ÐµÑ Ð´Ð½Ñ Ð² меÑÑÑе, Ñелое ÑиÑло Ð¾Ñ 1 до 31.getMonth - меÑÑÑ Ð² годÑ, Ñелое ÑиÑло Ð¾Ñ 0 (ÑнваÑÑ) до 11 (декабÑÑ).getYear - год в виде двÑÑ
поÑледниÑ
ÑиÑÑ, но еÑÑÑ Ð±Ð°Ð³Ð¸ в IE и FF.getFullYear - год в виде ÑеÑÑÑеÑ
ÑиÑÑ.
Ðожно Ñакже полÑÑаÑÑ Ð¾ÑделÑно знаÑÐµÐ½Ð¸Ñ Ð²Ñемени:
getHours - возвÑаÑÐ°ÐµÑ ÑÐ°Ñ ÑÑÑок в диапазоне Ð¾Ñ 0 (полноÑÑ) до 23.getMinutes - возвÑаÑÐ°ÐµÑ Ð¼Ð¸Ð½ÑÑÑ Ð² диапазоне Ð¾Ñ 0 до 59.getSeconds - возвÑаÑÐ°ÐµÑ ÑекÑÐ½Ð´Ñ Ð² диапазоне Ð¾Ñ 0 до 59.getMilliseconds - возвÑаÑÐ°ÐµÑ Ð¼Ð¸Ð»Ð»Ð¸ÑекÑÐ½Ð´Ñ Ð² диапазоне Ð¾Ñ 0 до 59.
ÐÑедположим, нам нÑжно ÑекÑÑее вÑÐµÐ¼Ñ Ð² ÑоÑмаÑе "ÑÑ:мм:ÑÑ"
var date = new Date();
var hours = date.getHours();
var minutes = date.getMinutes();
var seconds = date.getSeconds();
var results = hours + ":" + minutes + ":" + seconds;
//
ÐÑе пÑойденнÑе меÑÐ¾Ð´Ñ Ð²Ð¾Ð·Ð²ÑаÑаÑÑ Ð´Ð°ÑÑ Ð¼ÐµÑÑной вÑеменной зонÑ.
СÑÑеÑÑвÑÑÑ Ñакже UTC-ваÑианÑÑ ÑÑиÑ
меÑодов, возвÑаÑаÑÑие денÑ, меÑÑÑ, год и Ñ.п. Ð´Ð»Ñ Ð·Ð¾Ð½Ñ GMT+0 (UTC): getUTCFullYear(), getUTCMonth(), getUTCHours().
То еÑÑÑ, ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле "get" вÑÑавлÑеÑÑÑ "UTC".
var now = new Date();now.getHours();
// now.getUTCHours();
// Ðногда ÑÑебÑеÑÑÑ ÑзнаÑÑ ÑазниÑÑ Ð¼ÐµÐ¶Ð´Ñ Ð¼ÐµÑÑнÑм вÑеменем и UTC.
ФÑнкÑÐ¸Ñ getTimezoneOffset() веÑнÑÑ ÑÑÑ ÑазниÑÑ, в минÑÑаÑ
.
new Date().getTimezoneOffset() //
setDate, setHours, setMinutes, setSeconds, setFullYear, setMonth - Ñе же меÑодÑ, ÑолÑко Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñов даÑÑ.
setTime - ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð·Ð½Ð°Ñение обÑекÑа Date и возвÑаÑÐ°ÐµÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво миллиÑекÑнд, пÑоÑедÑиÑ
Ñ 1 ÑнваÑÑ 1970 года.
ÐÑе они, кÑоме setTime(), обладаÑÑ Ñакже UTC-ваÑианÑом, напÑимеÑ: setUTCHours().
ÐÑ Ð¼Ð¾Ð¶ÐµÐ¼ вÑÑиÑлиÑÑ Ð´Ð°ÑÑ "ÑеÑез год" и пÑи помоÑи меÑода setYear
var now = new Date();
var datePlusYear = now.setFullYear(2018);
//
ÐÑдÑÑе бдиÑелÑнÑ! ÐдеÑÑ Ð¼Ñ Ð½Ðµ ÑолÑко запиÑали в пеÑеменнÑÑ datePlusYear даÑÑ Ð½Ð° год позже, но и изменили иÑÑ
однÑÑ Ð´Ð°ÑÑ now
var now = new Date();now.setFullYear(2016);now.setFullYear(2018, 2, 19);now.setMonth(7);Ðожно ÑÑÑанавливаÑÑ Ð·Ð°Ð²ÐµÐ´Ð¾Ð¼Ð¾ некоÑÑекÑнÑе компоненÑÑ (напÑÐ¸Ð¼ÐµÑ 13 меÑÑÑ), а обÑÐµÐºÑ Ñам ÑÐµÐ±Ñ Ð¿Ð¾Ð¿ÑавиÑ.
ÐÑи ÑÑом непÑавилÑнÑе компоненÑÑ Ð´Ð°ÑÑ Ð°Ð²ÑомаÑиÑеÑки ÑаÑпÑеделÑÑÑÑÑ Ð¿Ð¾ оÑÑалÑнÑм.
ÐÐ¾Ñ Ð¿ÑÐ¸Ð¼ÐµÑ Ð±ÐµÐ·Ñмной даÑÑ:
var date = new Date(2017, 13, 32, 25, 61, 61, 1001);ÐÑо можно иÑполÑзоваÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð´Ð°ÑÑ, оÑдаленной Ð¾Ñ Ð¸Ð¼ÐµÑÑейÑÑ Ð½Ð° нÑжнÑй пÑомежÑÑок вÑемени. ÐапÑимеÑ, полÑÑим даÑÑ Ð½Ð° 70 ÑекÑнд болÑÑÑÑ ÑекÑÑей:
var date = new Date(2017, 1, 28);date.setSeconds(date.getSeconds() + 70);ÐапÑимеÑ, нÑжно ÑвелиÑиÑÑ Ð½Ð° 2 Ð´Ð½Ñ Ð´Ð°ÑÑ Â«28 ÑевÑÐ°Ð»Ñ 2011». ÐÐ¾Ð¶ÐµÑ Ð±ÑÑÑ Ñак, ÑÑо ÑÑо бÑÐ´ÐµÑ 2 маÑÑа, а Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ 1 маÑÑа, еÑли год виÑокоÑнÑй. Ðо нам обо вÑем ÑÑом дÑмаÑÑ Ð½Ðµ нÑжно. ÐÑоÑÑо пÑибавлÑем два днÑ. ÐÑÑалÑное ÑÐ´ÐµÐ»Ð°ÐµÑ Date:
var date = new Date(2011, 1, 28);
date.setDate(date.getDate() + 2);
ÐаÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ вÑÑиÑаÑÑ, ÑезÑлÑÑÐ°Ñ Ð²ÑÑиÑÐ°Ð½Ð¸Ñ Ð¾Ð±ÑекÑов Date â иÑ
вÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÑазниÑа, в миллиÑекÑндаÑ
.
var startDate = new Date(2017, 6, 3, 19);
var endDate = new Date(2017, 6, 3, 22);
console.log(endDate - startDate);
Также иÑ
можно и ÑÑавниваÑÑ
var startDate = new Date(2017, 6, 3, 19);
var endDate = new Date(2017, 6, 3, 22);
console.log(endDate > startDate);
console.log(endDate < startDate);
ÐÑполнение лÑбой ÑÑнкÑии можно повÑоÑÑÑÑ Ñаз в заданное вÑемÑ
function hi() {
console.log('hi');
}
var interval = setTimeout(hi, 1000);
ÐеÑконеÑо повÑоÑÑемÑÑ ÑÑнкÑÐ¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ оÑÑановиÑÑ
clearInterval(interval);
Ðак иÑполниÑÑ ÑÑнкÑÐ¸Ñ Ð½Ðµ ÑÑазÑ, а, напÑимеÑ, ÑеÑез 3 ÑекÑндÑ?
function hi() {
console.log('hi');
}
var timeout = setTimeout(hi, 3000);
Ðожно пÑедоÑвÑаÑиÑÑ Ð·Ð°Ð¿ÑÑк ÑÑнкÑии Ñ ÑаймаÑÑом
clearTimeout(timeout);