betacode

Руководство JavaScript Date

  1. ECMAScript Date
  2. Методы Date

1. ECMAScript Date

Date является встроенным видом данных в языке Javascript. Он и есть класс, создающий объекты представляющие дату и время (Date & time).
Стандарт ECMAScript требует объект Date чтобы представить любую дату и время, точную до милисекунды, в течении 100 миллионов дней перед или после 1/1/1970. Это диапазон прибавления или вычитания 273785 лет, поэтому JavaScript может представить дату и время до 275755 года.
В информатие, 12 часов утра 1-го Января 1970 года это особенно время, оно используется для начала отсчета времени. Данное время называется epoch (Компьютерная эпоха).
Смотрите далее о понятии Locale.
  • Khái niệm Locale trong khoa học máy tính
  • Sử dụng Locale trong NodeJS
Смотрите так же список часовых поясов по странам:

2. Методы Date

getDate()
Метод getDate() возвращает день месяца объекта Date по текущему Locale. Точнее он возвращает целое число (integer) в диапазоне [1-31].
getDate-example.js
let date = new Date("December 25, 2017 23:15:00");

var day = date.getDate();

console.log(day); // 25
getDay()
Метод getDate() возвращает день недели объекта Date по текущему Locale. Точнее он возвращает целое число (integer) в диапазоне [0-6]. 0 соответствует воскресенью, 1 соответствует понедельнику, ...
getDay-example.js
let date = new Date("December 25, 2017 11:15:00");// Monday

var day = date.getDay();

console.log(day); // 1
getFullYear()
Метод getFullYear() возвраещает год (year) объекта Date по текущему Locale. Точнее он возвращает целое число, например 2017.
getFullYear-example.js
let date = new Date("December 25, 2017 11:15:00");// Monday

var year = date.getFullYear();

console.log(year); // 2017
getHours()
Метод getHours() возвращает время Date по текущему Locale. Точнее он возвращает целое число (integer) в диапазоне [0-23].
getHours-example.js
let date = new Date("December 25, 2017 22:10:00");

let hour = date.getHours();

console.log(hour); // 22
getMilliseconds()
Метод getMilliseconds() возвращает милисекунды объекта Date по текущему Locale. Точнее он возвращает целое число в диапазоне [0-999].
getMilliseconds-example.js
let now = new Date();

console.log(now);// Ex: 2018-11-25T05:52:20.490Z

console.log("getMilliseconds() : " + now.getMilliseconds()); // 490
getMinutes()
Метод getMinutes() возвращает минуты (minute) объекта Date по текущему Locale. Точнее он возвращает целое число в диапазоне [0-59].
getMinutes-example.js
let now = new Date();

console.log(now);// Ex: 2018-11-25T05:58:20.178Z

console.log("getMinutes() : " + now.getMinutes()); // 58
getMonth()
Метод getMonth() возвращает месяц (month) объекта Date по текущему Locale. Точнее он возвращает целое число в диапазоне [0-11], 0 соответствует Январю (January), 1 соответствет Февралю (February),..
getMonth-example.js
let now = new Date();

console.log(now);// Ex: 2018-11-25T05:58:20.178Z

let month = now.getMonth(); // 10

console.log(month); // 10
getSeconds()
Метод getSeconds() возвращает секунды (second) объекта Date по текущему Locale. Точнее он возвращает целое число в диапазоне [0-59].
getSeconds-example.js
let now = new Date();

console.log(now);// Ex: 2018-11-25T06:06:24.211Z

console.log("getSeconds() : " + now.getSeconds()); // 24
getTime()
Метод getTime() возвращает период времени в милисекундах от 01/01/1970 00:00:00:000 до времени представленный объектом Date.
getTime-example.js
let now = new Date();

console.log(now);// Ex: 2018-11-25T06:14:59.213Z

console.log("getTime() : " + now.getTime()); // 1543126499213
getTimezoneOffset()
Метод getTimezoneOffset() возвращает часовой пояс (по минутам) для текущего Locale.
Часовой пояс (time-zone) зависит от Locale (локала), например часовой пояс Вьетнама UTC+07:00. При это Россия имеет 11 часовых поясов по всей территории.
Ваш компьютер может выбрать любой Locale, тогда часы на компьютере отображают время по данному Locale. Метод getTimezoneOffset() возвращает часовой пояс соответствующий с Locale который вы используете.
getTimezoneOffset:
  • Vietnam: UTC+07:00 ==> -420
  • Japan: UTC+09:00 ==> -540
getTimezoneOffset-example.js
// Vietnam: UTC+07:00
let now = new Date();

let timezoneOffset = now.getTimezoneOffset();

console.log(timezoneOffset); // -420
getUTCDate()
Метод getUTCDate() возвращает день месяца объекта Date по Universal Time (Всемирному времени). Точнее он возвращает целое число (integer) в диапазоне [1-31].
getUTCDate-example.js
// This example test in Locale: Vietnam UTC+7:00

let date = new Date("December 25, 2017 01:15:00");

let day = date.getDate();

console.log(day); // 25  (Test in Vietnam UTC+7:00)

let utcDay = date.getUTCDate();

console.log(utcDay); // 24  (UTC)
getUTCDay()
Метод getUTCDay() возвращает день недели объекта Date по Universal Time (Всемирному времени). Точнее он возвращает целое число (integer) в диапазоне [0-6]. 0 соответствует воскресенью, 1 соответствует понедельнику, ...
getUTCDay-example.js
// This example test in Locale: Vietnam UTC+7:00

let date = new Date("December 25, 2017 01:15:00"); // Monday

let day = date.getDay();

console.log(day); // 1


let utcDay = date.getUTCDay();

console.log(utcDay); // 0
getUTCFullYear()
Метод getUTCFullYear() возвращает год (year) объекта Date по Universal Time (Всемирному времени). Точнее он возвращает целое число например 2017.
getUTCFullYear-example.js
// This example test in Locale: Vietnam UTC+7:00

let date = new Date("January 01, 2019 01:15:00");

var year = date.getFullYear();

console.log(year); // 2019


var utcYear = date.getUTCFullYear();

console.log(utcYear); // 2018
getUTCHours()
Метод getHours() возвращает время объекта Date по Universal Time (Всемирному времени). Точнее он возвращает целое число (integer) в диапазоне [0-23].
getUTCHours-example.js
// This example test in Locale: Vietnam UTC+7:00

let now = new Date();

console.log(now);// Ex: 2018-11-25T07:29:59.575Z

let hour = now.getHours();

console.log(hour); // 14


let utcHour = now.getUTCHours();  

console.log(utcHour); // 7
getUTCMinutes()
Метод getUTCMinutes() возвращает минуты (minute) объекта Date по Universal Time (Всемирному времени). Точнее он возвращает целое число в диапазоне [0-59].
getUTCMinutes-example.js
// This example test in Locale: Vietnam UTC+7:00

let now = new Date();

console.log(now);// Ex: 2018-11-25T07:35:06.442Z

console.log("getUTCMinutes() : " + now.getUTCMinutes()); // 35
getUTCMilliseconds()
Метод getUTCMilliseconds() возвращает милисекунды объекта Date по Universal Time (Всемирному времени). Точнее он возвращает целое число в диапазоне [0-999].
getUTCMilliseconds-example.js
// This example test in Locale: Vietnam UTC+7:00

let now = new Date();

console.log(now);// Ex: 2018-11-25T07:39:03.222Z

console.log("getUTCMilliseconds() : " + now.getUTCMilliseconds()); // 222
getUTCMonth()
Метод getUTCMonth() возвращаем месяц (month) объекта Date по Universal Time (Всемирному времени). Точнее он возвращает целое число в диапазоне [0-11], 0 соответствует Январю (January), 1 соотвествует Февралю (February),..
getUTCMonth-example.js
// This example test in Locale: Vietnam UTC+7:00

let date = new Date("January 01, 2019 01:15:00");

console.log(date);// 2018-12-31T18:15:00.000Z

// January 2019 (Vietnam)
let month = date.getMonth(); // 0

console.log(month); // 0

// December 2018 (UTC)
let utcMonth = date.getUTCMonth(); // 11

console.log(utcMonth); // 11
getUTCSeconds()
Метод getUTCSeconds() возвращает секунды (second) объекта Date по Universal Time (Всемирному времени). Точнее он возвращает целое число в диапазоне [0-59].
getUTCSeconds-example.js
// This example test in Locale: Vietnam UTC+7:00

let now = new Date();

console.log(now);// Ex: 2018-11-25T06:06:24.211Z

console.log("getUTCSeconds() : " + now.getUTCSeconds()); // 24
setDate(dayValue)
Метод setDate(dayValue) настраивает значения дня месяца для объекта Date по текущему Locale. Параметром является целое число в диапазоне [1-31].
OK, Ситуация!! Например у вас есть объект Date представляющий дату 25/02/2017 (Февраль 2017 года имеет только 28 дней). Вы настраиваете значение31 для "день месяца" того объекта Date, что произойдет? В результате ваш объект Date представит 03/03/2017.
setDate-example.js
let date = new Date("February 25, 2017 23:15:00"); // 25/02/2017

date.setDate(18);

console.log(date); // 2017-02-18T16:15:00.000Z

// ??
date.setDate(31);

console.log(date); // 2017-03-03T16:15:00.000Z
setFullYear(yearValue[, monthValue[, dayValue]])
Метод setFullYear(...) настраивает значения года, месяца, дня для объекта Date по текущему Locale.
Параметры:
  • yearValue: Целое число, например 2018.
  • monthValue: Целое число в диапазоне [0-11], 0 соответствует Январю (January), 1 соответствет Февралю (February),...
  • dayValue: Целое число в диапазоне [1-31], представляет дни месяца.
setFullYear-example.js
let date = new Date();

console.log(date);// Ex: 2017-02-25T16:15:00.000Z

date.setFullYear(2015, 3, 19);

console.log(date); // 2018-12-19T16:15:00.000Z


date.setFullYear(2014, 10);

console.log(date); // 2018-12-25T16:15:00.000Z


date.setFullYear(2013);

console.log(date); // 2019-12-25T16:15:00.000Z
setMonth(monthValue[, dayValue])
Метод setMonth(...) настраивает значения месяца, дня для объекта Date по текущему Locale.
Параметры:
  • monthValue: Целое число в диапазоне [0-11], 0 соответствует Январю (January), 1 соответствет Февралю (February),...
  • dayValue: Целое число в диапазоне [1-31], представляет дни месяца.
setMonth-example.js
let date = new Date();

console.log(date);// Ex: 2018-11-25T17:42:01.751Z

date.setMonth(3, 19);// Month, day of month

console.log(date); // 2018-04-18T17:42:01.751Z


date.setMonth(10); // Month

console.log(date); // 2018-11-18T17:42:01.751Z
setHours(hoursValue[, minutesValue[, secondsValue[, msValue]]])
Метод setHours(..) настраивает значения часа, минуты, милисекунды объекту Date по текущему Locale.
Параметры:
  • hoursValue: Целое число в диапазоне [0-23].
  • minutesValue: Целое число в диапазоне [0-59].
  • secondsValue: Целое число в диапазоне [0-59].
  • msValue: Целое число в диапазоне [0-999].
setHours-example.js
let date = new Date();

console.log(date);// Ex: 2018-11-25T17:36:18.955Z

date.setHours(22, 11, 03, 555); // hours, minutes, seconds, milliseconds

console.log(date); // 2018-11-26T15:11:03.555Z


date.setHours(13, 10);// hours, minutes

console.log(date); // 2018-11-26T06:10:03.555Z
setMinutes(minutesValue[, secondsValue[, msValue]])
Метод setMinutes(..) настраивает значения минуты, секунды, милисекунды для объекта Date по текущему Locale.
Параметры:
  • minutesValue: Целое число в диапазоне [0-59].
  • secondsValue: Целое число в диапазоне [0-59].
  • msValue: Целое число в диапазоне [0-999].
setSeconds(secondsValue[, msValue])
Метод setSeconds(..) настраивает значения секунды, милисекунды для объекта Date по текущему Locale.
Параметры:
  • secondsValue: Целое число в диапазоне [0-59].
  • msValue: Целое число в диапазоне [0-999].
setMilliseconds(millisecondsValue)
Метод setMilliseconds(msValue) настраивает значения милисекунды для объекта Date по текущему Locale. Параметром является целое число в диапазоне [0-999].
setTime(timeValue)
Метод setTime(timeValue) помогает объекту Date представить новое время, где timeValue является периодом времени расчитанным в милисекундах от 01/01/1970 00:00:00:000 до того времени.
setTime-example.js
var date = new Date( "Aug 28, 2008 23:30:00" );

date.setTime( 5000000 );
console.log( date ); // 1970-01-01T01:23:20.000Z
toDateString()
Метод toDateString() возвращает текст (String) представляющий дату (date) объекта Date, который читается человеком.
toDateString-example.js
let date = new Date( );

var str = date.toDateString();

console.log(str); // Thu Nov 29 2018
toTimeString()
Метод toTimeString() возвращает текст (String) представляющий время (time) объекта Date, который читается человеком.
toTimeString-example.js
var dateobject = new Date(1993, 6, 28, 14, 39, 7);

console.log( dateobject.toTimeString() ); // 14:39:07 GMT+0700 (GMT+07:00)
toString()
Метод toString() возвращает текст (String) представляющий объект Date, который читается человеком.
toString-example.js
// This example test in Locale: Vietnam UTC+7:00

var dateobject = new Date(1993, 6, 28, 14, 39, 7);

console.log( dateobject.toString() ); // Wed Jul 28 1993 14:39:07 GMT+0700 (GMT+07:00)
toUTCString()
Метод toUTCString() возвращает текст (String) представляющий объект Date по Universal Time, который читается человеком.
toUTCString-example.js
// This example test in Locale: Vietnam UTC+7:00

var dateobject = new Date(1993, 6, 28, 14, 39, 7);

console.log( dateobject.toString() ); // Wed Jul 28 1993 14:39:07 GMT+0700 (GMT+07:00)

console.log( dateobject.toUTCString() ); // Wed, 28 Jul 1993 07:39:07 GMT
toLocaleDateString([locales][, options])
Метод toLocaleDateString([locales][, options]) возвращает текст представляющий дату (date) объекта Date по Locale и опциям в параметре. Если не определить Locale в параметре, будет использован текущий Locale.
Пример с методом toLocaleDateString(..) работающим на браузере.
toLocaleDateString-example.html
<!DOCTYPE html>
<html>
   <head>
      <meta charset="UTF-8">
      <title>toLocaleDateString()</title>
      <script>
         var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

         var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };

         console.log(date.toLocaleDateString('de-DE', options));
         // expected output: Donnerstag, 20. Dezember 2012

         console.log(date.toLocaleDateString('ar-EG', options));
         // expected output: الخميس، ٢٠ ديسمبر، ٢٠١٢

         console.log(date.toLocaleDateString('ko-KR', options));
         // expected output: 2012년 12월 20일 목요일
      </script>
   </head>
   <body>
      Show informations in the Console.
   </body>
</html>
toLocaleTimeString( [locales][, options])
Метод toLocaleTimeString([locales][, options]) возвращает текст представляющий время (time) объекта Date по Locale и опций в параметрах. Если не определить Locale в параметрах, используется текущий Locale.
toLocaleTimeString-example.html
<!DOCTYPE html>
<html>
   <head>
      <meta charset="UTF-8">

      <title>toLocaleTimeString()</title>
      <script>
         var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

         var options = {} // {hour: "2-digit", minute: "2-digit", second: "2-digit"}

         console.log(date.toLocaleTimeString('de-DE', options));
         // expected output: 10:00:00

         console.log(date.toLocaleTimeString('ar-EG', options));
         // expected output: ١٠:٠٠:٠٠ ص

         console.log(date.toLocaleTimeString('ko-KR', options));
         // expected output: 오전 10:00:00
      </script>
   </head>
   <body>
      Show informations in the Console.
   </body>
</html>
toLocaleString([locales][, options])
Метод toLocaleString([locales][, options]) возвращает текст представляющий объект Date по Locale и опиции в параметрах. Если не определить Locale в параметрах, используется текущий Locale.
toLocaleString-example.html
<!DOCTYPE html>
<html>
   <head>
      <meta charset="UTF-8">

      <title>toLocaleString()</title>
      <script>
         var date = new Date(Date.UTC(2012, 11, 20, 3, 20, 59));

         //  { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric',
         //     hour: "2-digit", minute: "2-digit", second: "2-digit"}
         var options = {}; // Default options

         console.log(date.toLocaleString('de-DE', options));
         // expected output: 20.12.2012, 10:20:59

         console.log(date.toLocaleString('ar-EG', options));
         // expected output: ٢٠‏/١٢‏/٢٠١٢ ١٠:٢٠:٥٩ ص

         console.log(date.toLocaleString('ko-KR', options));
         // expected output: 2012. 12. 20. 오전 10:20:59
      </script>
   </head>
   <body>
      Show informations in the Console.
   </body>
</html>
Примечание: Методы toLocaleDateString(..), toLocaleTimeString(..), toLocaleString(..) работают не как ожидается в среде NodeJS, эта проблема обсуждается на GitHub:

Pуководства ECMAScript, Javascript

Show More