JS Dates

24/07/2019

Bài sau » « Bài trước

Mặc định, Javascript sẽ sử dụng múi giờ của trình duyệt và hiển thị thời gian dưới dạng String. Ví dụ 1 chuỗi date cơ bản:

Tue Jul 23 2019 21:21:50 GMT+0700 (Giờ Đông Dương)

Date objects được tạo bởi contructor new Date()

Có 4 cách để tạo Date object:

new Date() new Date(year, month, day, hours, minutes, seconds, milliseconds) new Date(milliseconds) new Date(date string)

new Date()

Phương thức new Date() tạo Date object với ngày tháng và thời gian hiện tại.

var d = new Date(); document.getElementById("demo").innerHTML = d; // Kết quả là: Tue Jul 23 2019 21:21:50 GMT+0700 (Giờ Đông Dương)

new Date(year, month,...)

Phương thức new Date(year, month,...) tạo Date object với ngày tháng và thời gian được chỉ định cụ thể.

7 Tham số theo thứ tự cụ thể như sau: year, month, day, hour, minute, second, and millisecond

var d = new Date(2018, 11, 24, 10, 33, 30, 0); document.getElementById("demo").innerHTML = d; // Kết quả là: Mon Dec 24 2018 10:33:30 GMT+0700 (Giờ Đông Dương)

Chú ý: Javascript đếm tháng từ 0 đến 11. Tháng 1 là 0, tháng 12 là 11.

Trong 7 tham số ở trên thì year và month là cần phải truyền vào, các tham số còn lại không có cũng được.

Trường hợp nếu chỉ có 1 tham số. Thì lúc này Date object sẽ hiểu tham số truyền vào là giây. Trường hợp này kết quả sẽ không như mong muốn. Xem ví dụ bên dưới:

var d = new Date(2018); document.getElementById("demo").innerHTML = d; // Kết quả là: Thu Jan 01 1970 08:00:02 GMT+0800 (Giờ Đông Dương) // Số 2018 được hiểu là giây => chuyển thành giờ 08:00:02

Trường hợp số năm mà bạn truyền vào có 1 hoặc 2 kí tự thì nó sẽ hiểu ở năm 19xx. Xem ví dụ:

var d = new Date(99, 11, 24); document.getElementById("demo").innerHTML = d; // Kết quả là: Fri Dec 24 1999 00:00:00 GMT+0700 (Giờ Đông Dương) // Số năm viết 2 kí tự nên thành 1999

var d = new Date(9, 11, 24); document.getElementById("demo").innerHTML = d; // Kết quả là: Fri Dec 24 1909 00:00:00 GMT+0706 (Giờ Đông Dương) // Số năm viết 1 kí tự nên thành 1909

new Date(dateString)

Phương thức new Date(dateString) tạo Date object với thời gian được chỉ định trong dateString

var d = new Date("October 13, 2014 11:13:00"); document.getElementById("demo").innerHTML = d; // Kết quả là: Mon Oct 13 2014 11:13:00 GMT+0700 (Giờ Đông Dương)

Javascript lưu trữ thời gian dưới dạng number kể từ ngày January 01, 1970 00:00:00 UTC (Universal Time Coordinated - Giờ phối hợp Quốc tế).

Ngày January 01, 1970 00:00:00 UTC là 0. Bây giờ là hơn 1563891710575 </span.

new Date(milliseconds)

Như có đề cập phần trên, Khi chỉ truyền vào new Date() một tham số thì Javascript sẽ hiểu là số giây. Và thời gian trả về được quy đổi từ số giây đó ra ngày tháng kể từ ngày 01-01-1970 00:00:00.

var d = new Date(100000000000); document.getElementById("demo").innerHTML = d; // Kết quả là: Sat Mar 03 1973 17:46:40 GMT+0800 (Giờ Đông Dương)

Nếu bạn truyền vào số âm thì nó sẽ tính thời gian trở về trước ngày 01-01-1970.

var d = new Date(-100000000000); document.getElementById("demo").innerHTML = d; // Kết quả là: Mon Oct 31 1966 22:13:20 GMT+0800 (Giờ Đông Dương)

1 ngày có 24 giờ tương đương 86 400 000 giây

JavaScript Date Formats

Date input

Nhìn chung có 3 loại định dạng nhập ngày trong JavaScript:

LoạiVí dụ
ISO Date"2015-03-25" (Chuẩn Quốc tế)
Short Date"03/25/2015"
Long Date"Mar 25 2015" or "25 Mar 2015"

Date output

Không phụ thuộc vào định dạng Date input, JavaScript sẽ mặc định Date output ở định dạng chuỗi văn bản đầy đủ:

Wed Mar 25 2015 07:00:00 GMT+0700 (Giờ Đông Dương)

Phương thức get Date

Dưới đây là các phương thức có sẵn dùng để lấy thông tin trong Date object:

Phương thứcMô tả
getFullYear()Lấy số năm với 4 kí tự (yyyy)
getMonth()Lấy tháng với số từ (0-11)
getDate()Lấy ngày với số từ (1-31)
getHours()Lấy giờ (0-23)
getMinutes()Lấy phút (0-59)
getSeconds()Lấy giây(0-59)
getMilliseconds()Lấy mili giây (0-999)
getTime()Lấy thời gian (số mili giây từ January 1, 1970)
getDay()Lấy ngày trong tuần (0-6)
Date.now()Lấy thời gian. Chuẩn ECMAScript 5

Phương thức getTime()

Phương thức getTime() trả về là số mili giây kể từ ngày 01-01-1970.

var d = new Date(); document.getElementById("demo").innerHTML = d.getTime(); // Kết quả là 1 số dạng như: 1563955787407

Phương thức getFullYear()

Phương thức getFullYear() trả về là số năm đầy đủ 4 kí tự.

var d = new Date(); document.getElementById("demo").innerHTML = d.getFullYear(); // Hôm nay là 24/07/2019. Kết quả là: 2019

Phương thức getMonth()

Phương thức getMonth() trả về là 1 số trong khoảng 0-11. Tháng 1 là 0, tháng 12 là 11.

var d = new Date(); document.getElementById("demo").innerHTML = d.getMonth(); // Hôm nay là 24/07/2019. Kết quả là: 6

Bạn có thể tạo 1 array là tên của tháng, sau đó liên kết array này với số lấy được từ getMonth(). Xem ví dụ dưới để rõ hơn.

var d = new Date(); var months = ["Tháng 1", "Tháng 2", "Tháng 3", "Tháng 4", "Tháng 5", "Tháng 6", "Tháng 7", "Tháng 8", "Tháng 9", "Tháng 10", "Tháng 11", "Tháng 12"]; document.getElementById("demo").innerHTML = months[d.getMonth()]; // Ở đây là months[6] // Hôm nay là 24/07/2019. Kết quả là: Tháng 7

Phương thức getDate()

Phương thức getDate() trả về là 1 số trong khoảng 1-31.

var d = new Date(); document.getElementById("demo").innerHTML = d.getDate(); // Hôm nay là 24/07/2019. Kết quả là: 24

Phương thức getHours()

Phương thức getHours() trả về là 1 số trong khoảng 0-23.

var d = new Date(); document.getElementById("demo").innerHTML = d.getHours();

Phương thức getMinutes()

Phương thức getMinutes() trả về là 1 số trong khoảng 0-59.

var d = new Date(); document.getElementById("demo").innerHTML = d.getMinutes();

Phương thức getSeconds()

Phương thức getSeconds() trả về là 1 số trong khoảng 0-59.

var d = new Date(); document.getElementById("demo").innerHTML = d.getSeconds();

Phương thức getMilliseconds()

Phương thức getMilliseconds() trả về là 1 số trong khoảng 0-999.

var d = new Date(); document.getElementById("demo").innerHTML = d.getMilliseconds();

Phương thức getDay()

Phương thức getDay() trả về là 1 số trong khoảng 0-6.

var d = new Date(); document.getElementById("demo").innerHTML = d.getDay();

Trong Javascript, Ngày đầu tiên trong tuần là Chủ nhật (0), và thứ bảy là 6.

Nếu bạn muốn trả về là tên thứ trong tuần thì ta tạo 1 array là tên của các thứ. Sau đó map với giá chỉ số lấy được từ getDay().

var d = new Date(); var days = ["Chủ nhật", "Thứ 2", "Thứ 3", "Thứ 4", "Thứ 5", "Thứ 6", "Thứ 7"]; document.getElementById("demo").innerHTML = days[d.getDay()]; // Kết quả là: Thứ 4

Phương thức UTC Date

Phương thức UTC Date dùng để làm việc với UTC dates (Universal Time Zone dates - Múi giờ toàn cầu).

Phương thứcMô tả
getUTCDate()Giống getDate(), nhưng trả về UTC date
getUTCDay()Giống getDay(),nhưng trả về UTC day
getUTCFullYear()Giống getFullYear(),nhưng trả về UTC year
getUTCHours()Giống getHours(),nhưng trả về UTC hour
getUTCMilliseconds()Giống getMilliseconds(),nhưng trả về UTC milli seconds
getUTCMinutes()Giống getMinutes(),nhưng trả về UTC minutes
getUTCMonth()Giống getMonth(), nhưng trả về UTC month
getUTCSeconds()Giống getSeconds(),nhưng trả về UTC seconds

Phương thức set Date

Phương thức set Date cho phép bạn đặt một giá trị (years, months, days, hours, minutes, seconds, milliseconds) cho Date Object.

Phương thứcMô tả
setDate()Thiết lập 1 ngày từ (1-31)
setFullYear()Thiết lập năm (Có thể thêm tháng, ngày)
setHours()Thiết lập giờ (0-23)
setMilliseconds()Thiết lập mili giây (0-999)
setMinutes()Thiết lập phút (0-59)
setMonth()Thiết lập tháng (0-11)
setSeconds()Thiết lập giây(0-59)
setTime()Thiết lập thời gian (milli giây từ January 1, 1970)

Phương thức setFullYear()

Phương thức setFullYear() thiết lập năm trong Date objects. Ví dụ bên dưới thiết lập năm 2020:

var d = new Date(); d.setFullYear(2020); document.getElementById("demo").innerHTML = d; // kết quả là: Fri Jul 24 2020 15:53:52 GMT+0700 (Giờ Đông Dương)

Phương thức này còn có thể truyền vào thêm 2 tham số là ngày và tháng.

var d = new Date(); d.setFullYear(2020,11,3); // truyền vào year, month, day document.getElementById("demo").innerHTML = d; // kết quả là: Thu Dec 03 2020 15:54:41 GMT+0700 (Giờ Đông Dương)

Phương thức setMonth()

Phương thức setMonth() thiết lập tháng trong Date objects (0-11).

var d = new Date(); d.setMonth(11); document.getElementById("demo").innerHTML = d; // kết quả là: Tue Dec 24 2019 15:57:21 GMT+0700 (Giờ Đông Dương)

Phương thức setDate()

Phương thức setDate() thiết lập ngày trong Date objects (0-31).

var d = new Date(); d.setDate(15); document.getElementById("demo").innerHTML = d; // kết quả là: Mon Jul 15 2019 15:59:27 GMT+0700 (Giờ Đông Dương)

Phương thức setDate() có thể cộng thêm ngày vào.

var d = new Date(); d.setDate(d.getDate() + 50); document.getElementById("demo").innerHTML = d; // kết quả là: Thu Sep 12 2019 16:03:59 GMT+0700 (Giờ Đông Dương)

Nếu thêm ngày làm thay đổi tháng hoặc năm, các thay đổi sẽ được xử lý tự động bởi Date object.

Phương thức setMinutes()

Phương thức setMinutes() thiết lập phút trong Date objects (0-59).

var d = new Date(); d.setMinutes(30); document.getElementById("demo").innerHTML = d; // kết quả là: Wed Jul 24 2019 16:30:16 GMT+0700 (Giờ Đông Dương)

Phương thức setSeconds()

Phương thức setSeconds() thiết lập giây trong Date objects (0-59).

var d = new Date(); d.setSeconds(30); document.getElementById("demo").innerHTML = d; // kết quả là: Wed Jul 24 2019 16:09:30 GMT+0700 (Giờ Đông Dương)

So sánh Date

Dates thì dễ dàng để so sánh.

Ví dụ bên dưới so sánh ngày hiện tại với January 14, 2020

var today, someday, text; today = new Date(); someday = new Date(); someday.setFullYear(2020, 0, 14); if (someday > today) { text = "Hôm nay trước January 14, 2020."; } else { text = "Hôm nay sau January 14, 2020."; } document.getElementById("demo").innerHTML = text; // kết quả là: Hôm nay trước January 14, 2020.

Bài sau » « Bài trước
Back to top