openplanning

Hướng dẫn và ví dụ JavaScript Date

  1. ECMAScript Date
  2. Các phương thức của Date

1. ECMAScript Date

Date là một kiểu dữ liệu được xây dựng sẵn trong ngôn ngữ Javascript. Nó chính là một lớp để tạo ra các đối tượng đại diện cho ngày tháng và thời gian (Date & time).
Tiêu chuẩn ECMAScript yêu cầu đối tượng Date để có thể đại diện cho bất kỳ ngày tháng và thời gian nào, chính xác đến mili giây, trong vòng 100 triệu ngày trước hoặc sau 1/1/1970. Đây là một phạm vi cộng hoặc trừ 273785 năm, do đó JavaScript có thể đại diện cho ngày tháng và thời gian cho đến năm 275755.
Trong khoa học máy tính, 12h sáng ngày 1 tháng 1 năm 1970 là một thời điểm đặc biệt, nó được sử dụng để bắt đầu đếm thời gian. Thời điểm đặc biệt này được gọi là epoch (Tạm hiểu là kỷ nguyên máy tính).
Xem thêm về khái niệm Locale.
  • Khái niệm Locale trong khoa học máy tính
  • Sử dụng Locale trong NodeJS
Xem thêm, danh sách các múi giờ theo quốc gia:

2. Các phương thức của Date

getDate()
Phương thức getDate() trả về ngày của tháng của đối tượng Date theo Locale hiện tại. Cụ thể nó trả về một số nguyên (integer) nằm trong khoảng [1-31].
getDate-example.js
let date = new Date("December 25, 2017 23:15:00");

var day = date.getDate();

console.log(day); // 25
getDay()
Phương thức getDate() trả về ngày của tuần của đối tượng Date theo Locale hiện tại. Cụ thể là một số nguyên (integer) nằm trong khoảng [0-6]. 0 tương ứng với chủ nhật, 1 tương ứng với thứ hai, ...
getDay-example.js
let date = new Date("December 25, 2017 11:15:00");// Monday

var day = date.getDay();

console.log(day); // 1
getFullYear()
Phương thức getFullYear() trả về năm (year) của đối tượng Date theo Locale hiện tại. Cụ thể nó trả về một số nguyên, chẳng hạn 2017.
getFullYear-example.js
let date = new Date("December 25, 2017 11:15:00");// Monday

var year = date.getFullYear();

console.log(year); // 2017
getHours()
Phương thức getHours() trả về giờ của đối tượng Date theo Locale hiện tại. Cụ thể nó trả về một số nguyên (integer) nằm trong khoảng [0-23].
getHours-example.js
let date = new Date("December 25, 2017 22:10:00");

let hour = date.getHours();

console.log(hour); // 22
getMilliseconds()
Phương thức getMilliseconds() trả về mili giây của đối tượng Date theo Locale hiện tại. Cụ thể nó trả về một số nguyên nằm trong khoảng [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()
Phương thức getMinutes() trả về phút (minute) của đối tượng Date theo Locale hiện tại. Cụ thể nó trả về một số nguyên nằm trong khoảng [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()
Phương thức getMonth() trả về tháng (month) của đối tượng Date theo Locale hiện tại. Cụ thể nó trả về một số nguyên trong khoảng [0-11], 0 tương ứng với tháng một (January), 1 tương ứng với tháng hai (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()
Phương thức getSeconds() trả về giây (second) của đối tượng Date theo Locale hiện tại. Cụ thể nó trả về một số nguyên nằm trong khoảng [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()
Phương thức getTime() trả về một khoảng thời gian tính bằng số mili giây từ thời điểm 01/01/1970 00:00:00:000 cho tới thời điểm đại diện bởi đối tượng 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()
Phương thức getTimezoneOffset() trả về múi giờ (Tính theo phút) cho Locale hiện tại.
Múi giờ (time-zone) phụ thuộc vào Locale (địa phương), ví dụ múi giờ của Việt NamUTC+07:00. Trong khi đó nước Nga rộng lớn trải dài đến 11 múi giờ.
Máy tính của bạn có thể tùy chọn một Locale bất kỳ, khi đó đồng hồ trên máy tính sẽ hiển thị thời gian theo Locale này. Phương thức getTimezoneOffset() sẽ trả về múi giờ ứng với Locale mà bạn đang sử dụng.
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()
Phương thức getUTCDate() trả về ngày của tháng của đối tượng Date theo Universal Time (Thời gian quốc tế). Cụ thể nó trả về một số nguyên (integer) nằm trong khoảng [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()
Phương thức getUTCDay() trả về ngày của tuần của đối tượng Date theo Universal Time (Thời gian quốc tế). Cụ thể là một số nguyên (integer) nằm trong khoảng [0-6]. 0 tương ứng với chủ nhật, 1 tương ứng với thứ hai, ...
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()
Phương thức getUTCFullYear() trả về năm (year) của đối tượng Date theo Universal Time (Thời gian quốc tế). Cụ thể nó trả về một số nguyên, chẳng hạn 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()
Phương thức getHours() trả về giờ của đối tượng Date theo Universal Time (Thời gian quốc tế). Cụ thể nó trả về một số nguyên (integer) nằm trong khoảng [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()
Phương thức getUTCMinutes() trả về phút (minute) của đối tượng Date theo Universal Time (Thời gian quốc tế). Cụ thể nó trả về một số nguyên nằm trong khoảng [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()
Phương thức getUTCMilliseconds() trả về mili giây của đối tượng Date theo Universal Time (Thời gian quốc tế). Cụ thể nó trả về một số nguyên nằm trong khoảng [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()
Phương thức getUTCMonth() trả về tháng (month) của đối tượng Date theo Universal Time (Thời gian quốc tế). Cụ thể nó trả về một số nguyên trong khoảng [0-11], 0 tương ứng với tháng một (January), 1 tương ứng với tháng hai (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()
Phương thức getUTCSeconds() trả về giây (second) của đối tượng Date theo Universal Time (Thời gian quốc tế). Cụ thể nó trả về một số nguyên nằm trong khoảng [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)
Phương thức setDate(dayValue) sét giá trị ngày của tháng cho đối tượng Date theo Locale hiện tại. Tham số là số nguyên có giá trị trong khoảng [1-31].
OK, Một tình huống!! Giả sử bạn có một đối tượng Date đại diện cho ngày 25/02/2017 (Tháng 2 năm 2017 chỉ có 28 ngày). Bạn sét giá trị 31 cho "ngày của tháng" của đối tượng Date đó, điều gì sẽ xẩy ra? Kết quả là đối tượng Date của bạn sẽ đại diện cho ngày 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]])
Phương thức setFullYear(...) sét các giá trị năm, tháng, ngày cho đối tượng Date theo Locale hiện tại.
Các tham số:
  • yearValue: Một số nguyên, chẳng hạn 2018.
  • monthValue: Một số nguyên trong khoảng [0-11], 0 tương ứng với tháng một (January), 1 tương ứng với tháng hai (February),...
  • dayValue: Một số nguyên trong khoảng [1-31], đại diện cho ngày của tháng.
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])
Phương thức setMonth(...) sét các giá trị tháng, ngày cho đối tượng Date theo Locale hiện tại.
Các tham số:
  • monthValue: Một số nguyên trong khoảng [0-11], 0 tương ứng với tháng một (January), 1 tương ứng với tháng hai (February),...
  • dayValue: Một số nguyên trong khoảng [1-31], đại diện cho ngày của tháng.
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]]])
Phương thức setHours(..) sét đặt các giá trị giờ, phút, giây, mili giây cho đối tượng Date theo Locale hiện tại.
Các tham số:
  • hoursValue: Một số nguyên trong khoảng [0-23].
  • minutesValue: Một số nguyên trong khoảng [0-59].
  • secondsValue: Một số nguyên trong khoảng [0-59].
  • msValue: Một số nguyên trong khoảng [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]])
Phương thức setMinutes(..) sét đặt các giá trị phút, giây, mili giây cho đối tượng Date theo Locale hiện tại.
Các tham số:
  • minutesValue: Một số nguyên trong khoảng [0-59].
  • secondsValue: Một số nguyên trong khoảng [0-59].
  • msValue: Một số nguyên trong khoảng [0-999].
setSeconds(secondsValue[, msValue])
Phương thức setSeconds(..) sét đặt các giá trị giây, mili giây cho đối tượng Date theo Locale hiện tại.
Các tham số:
  • secondsValue: Một số nguyên trong khoảng [0-59].
  • msValue: Một số nguyên trong khoảng [0-999].
setMilliseconds(millisecondsValue)
Phương thức setMilliseconds(msValue) sét đặt giá trị mili giây cho đối tượng Date theo Locale hiện tại. Tham số là một số nguyên trong khoảng [0-999].
setTime(timeValue)
Phương thức setTime(timeValue) giúp đối tượng Date đại diện cho một thời điểm mới, mà timeValue chính là khoảng thời gian tính bằng mili giây từ 01/01/1970 00:00:00:000 đến thời điểm đó.
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()
Phương thức toDateString() trả về một chuỗi (String) biểu diễn phần ngày tháng (date) của đối tượng Date, mà con người có thể đọc được.
toDateString-example.js
let date = new Date( );

var str = date.toDateString();

console.log(str); // Thu Nov 29 2018
toTimeString()
Phương thức toTimeString() trả về một chuỗi (String) biểu diễn phần thời gian (time) của đối tượng Date, mà con người có thể đọc được.
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()
Phương thức toString() trả về một chuỗi (String) biểu diễn đối tượng Date, mà con người có thể đọc được.
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()
Phương thức toUTCString() trả về một chuỗi (String) biểu diễn đối tượng Date theo Universal Time, mà con người có thể đọc được.
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])
Phương thức toLocaleDateString([locales][, options]) trả về một chuỗi biểu diễn phần ngày tháng (date) của đối tượng Date theo các Locale và các tùy chọn trong tham số. Nếu không chỉ định Locale trong tham số Locale hiện thời sẽ được sử dụng.
Một ví dụ với phương thức toLocaleDateString(..) chạy trên trình duyệt.
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])
Phương thức toLocaleTimeString([locales][, options]) trả về một chuỗi biểu diễn phần thời gian (time) của đối tượng Date theo các Locale và các tùy chọn trong tham số. Nếu không chỉ định Locale trong tham số Locale hiện thời sẽ được sử dụng.
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])
Phương thức toLocaleString([locales][, options]) trả về một chuỗi biểu diễn đối tượng Date theo các Locale và các tùy chọn trong tham số. Nếu không chỉ định Locale trong tham số Locale hiện thời sẽ được sử dụng.
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>
Chú ý: Các phương thức toLocaleDateString(..), toLocaleTimeString(..), toLocaleString(..) hoạt động không như mong đợi trên môi trường NodeJS, vấn đề này đã được thảo luận trên GitHub:

Các hướng dẫn ECMAScript, Javascript

Show More