--- title: Date slug: Web/JavaScript/Reference/Global_Objects/Date tags: - Date - JavaScript - Vietnamese translation_of: Web/JavaScript/Reference/Global_Objects/Date ---
Tạo ra một thể hiện JavaScript Date đại diện cho một khoảnh khắc trong thời gian. Đối tượng ngày được dựa trên giá trị thời gian là số mili giây kể từ ngày 1 tháng 1 năm 1970 UTC.
new Date(); new Date(value); new Date(dateString); new Date(year, month[, date[, hours[, minutes[, seconds[, milliseconds]]]]]);
Lưu ý: Đối tượng JavaScript Date chỉ có thể được khởi tạo bằng cách gọi JavaScript Date như một constructor: gọi nó như là một hàm thông thường (tức là không có toán tử {{jsxref ("Operators / new", "new")}}) sẽ trả về một chuỗi thay vì một tượng Date; không giống như các kiểu đối tượng JavaScript khác, đối tượng JavaScript Date không có cú pháp rút gọn.
Chú ý: Trường hợp Date được gọi như một hàm khởi tạo với nhiều hơn một đối số, nếu các giá trị lớn hơn phạm vi hợp lý của chúng (ví dụ: 13 được cung cấp như là giá trị tháng hoặc 70 cho giá trị phút) thì giá trị liền kề sẽ được điều chỉnh. Ví dụ, new Date(2013, 13, 1)
tương đương với new Date(2014, 1, 1)
, cả hai đều tạo ra một ngày cho 2014-02-01
(lưu ý rằng tháng này là 0). Tương tự cho các giá trị khác: new Date(2013, 2, 1, 0, 70)
tương đương với new Date(2013, 2, 1, 1, 10)
mà cả hai đều tạo ra một ngày cho 2013-03-01T01:10:00
.
Chú ý: Trường hợp Date được gọi như một hàm khởi tạo với nhiều hơn một đối số, các đối số xác định đại diện cho thời gian địa phương. Nếu UTC là mong muốn, sử dụng Date mới ({{jsxref ("Date.UTC ()", "Date.UTC (...)")}}) với cùng một đối số.
value
dateString
Lưu ý: Việc phân tách chuỗi ngày với constructor Date
(và Date.parse
, chúng là tương đương) đôi khi không như mong muốn do sự khác biệt và sự không nhất quán của trình duyệt. Hỗ trợ cho các chuỗi định dạng RFC 2822 chỉ là theo quy ước. Hỗ trợ các định dạng ISO 8601 khác với chuỗi "chỉ có ngày" (ví dụ: "1970-01-01") được coi như là UTC chứ không phải địa phương.
year
month
date
hours
minutes
seconds
milliseconds
Date
với ngày và giờ hiện tại theo các cài đặt hệ thống.Date
là -100.000.000 ngày đến 100.000.000 ngày liên quan đến ngày 01 tháng 1 năm 1970 UTC.Date
hỗ trợ một số phương pháp UTC (phổ quát), cũng như các phương pháp thời gian địa phương. UTC, còn được gọi là Greenwich Mean Time (GMT), nghĩa là thời gian theo World Time Standard (Tiêu chuẩn Thời gian Thế giới). Thời gian địa phương là thời gian được biết đến với máy tính nơi thực hiện lệnh JavaScript.Date
như một hàm (nghĩa là không có toán tử {{jsxref("Operators/new", "new")}}) sẽ trả về một chuỗi đại diện cho ngày và giờ hiện tại.Date
.Date.length
Date.length
là 7. Đây là số lượng các đối số được xử lý bởi hàm khởi tạo.Note: Việc phân tách cú pháp với Date.parse rất không chính xác do sự khác biệt giữa trình duyệt và sự không nhất quán..
Date
Tất cả thể hiện của Date
kế thừa từ {{jsxref("Date.prototype")}}. Đối tượng nguyên mẫu của hàm khởi tạo Date
có thể được sửa đổi để ảnh hưởng đến tất cả thể hiện của Date
.
Date
Các ví dụ sau đây cho thấy một số cách để tạo các ngày JavaScript:
Chú ý: Việc phân tích các chuỗi ngày với constructor Date (và Date.parse, chúng là tương đương) rất không chính xác do sự khác biệt và sự không nhất quán của trình duyệt.
var today = new Date(); var birthday = new Date('October 30, 1996 15:27:08'); var birthday = new Date('1996-10-30T15:27:08'); var birthday = new Date(1996, 10, 30); var birthday = new Date(1996, 10, 30, 15, 27, 8);
Để tạo và lấy các ngày giữa các năm 0 đến 99 các phương thức {{jsxref("Date.prototype.setFullYear()")}} và {{jsxref("Date.prototype.getFullYear()")}} nên được sử dụng.
var date = new Date(98, 1); // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT). // Phương thức bị phản đối, 98 ứng với 1998 ở đây cũng vậy. date.setYear(98); // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT). date.setFullYear(98); // Sat Feb 01 0098 00:00:00 GMT+0000 (BST).
Các ví dụ sau chỉ ra cách xác định thời gian trôi qua giữa hai ngày JavaScript trong mili giây.
Do những ngày dài khác nhau (do thay đổi ánh sáng ban ngày), tháng và năm, thể hiện thời gian trôi qua theo đơn vị lớn hơn giờ, phút và giây đòi hỏi phải giải quyết một số vấn đề và cần được nghiên cứu kỹ trước khi cố gắng thử.
// using Date objects var start = Date.now(); // the event to time goes here: doSomethingForALongTime(); var end = Date.now(); var elapsed = end - start; // elapsed time in milliseconds
// using built-in methods var start = new Date(); // the event to time goes here: doSomethingForALongTime(); var end = new Date(); var elapsed = end.getTime() - start.getTime(); // elapsed time in milliseconds
// to test a function and get back its return function printElapsedTime(fTest) { var nStartTime = Date.now(), vReturn = fTest(), nEndTime = Date.now(); console.log('Elapsed time: ' + String(nEndTime - nStartTime) + ' milliseconds'); return vReturn; } yourFunctionReturn = printElapsedTime(yourFunction);
Chú ý: Trong các trình duyệt hỗ trợ {{domxref("window.performance", "API Hiệu suất Web", "", 1)}} tính năng thời gian có độ phân giải cao, {{domxref("Performance.now()")}} có thể cung cấp các phép đo đáng tin cậy và chính xác về thời gian trôi qua hơn {{jsxref("Date.now()")}}.
Đặc điểm kỹ thuật | Trạng thái | Chú thích |
---|---|---|
{{SpecName('ESDraft', '#sec-date-objects', 'Date')}} | {{Spec2('ESDraft')}} | |
{{SpecName('ES6', '#sec-date-objects', 'Date')}} | {{Spec2('ES6')}} | |
{{SpecName('ES5.1', '#sec-15.9', 'Date')}} | {{Spec2('ES5.1')}} | |
{{SpecName('ES1')}} | {{Spec2('ES1')}} | Định nghĩa ban đầu. Được thực hiện trong JavaScript 1.1. |
Đặc tính | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Hỗ trợ cơ bản | {{CompatVersionUnknown}} [1] | {{CompatVersionUnknown}} [1] | {{CompatVersionUnknown}} [2] | {{CompatVersionUnknown}} [1] | {{CompatVersionUnknown}} [1] |
Đặc tính | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Hỗ trợ cơ bản | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
[1] Một số trình duyệt có thể gặp sự cố khi phân tích ngày tháng: 3/14/2012 blog from danvk Comparing FF/IE/Chrome on Parsing Date Strings.
[2] ISO8601 Date Format is not supported Trong Internet Explorer 8, và các phiên bản khác có thể có vấn đề chuyển đổi ngày tháng.