--- title: Date slug: Web/JavaScript/Reference/Global_Objects/Date tags: - Date - JavaScript - Vietnamese translation_of: Web/JavaScript/Reference/Global_Objects/Date ---
{{JSRef}}

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.

Cú pháp

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.

Các tham số

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
Giá trị số nguyên đại diện cho số mili giây kể từ 01/01/1970-00:00:00 UTC.
dateString
Giá trị chuỗi đại diện cho một ngày. Chuỗi phải ở định dạng được công nhận bới phương thức {{jsxref("Date.parse()")}}.

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
Giá trị số nguyên đại diện cho năm. Các giá trị từ 0 đến 99 ứng với các năm từ 1900 đến 1999.
month
Giá trị số nguyên đại diện cho tháng, bắt đầu với 0 cho Tháng Một đến 11 cho Tháng Mười Hai.
date
Tùy chọn. Giá trị số nguyên đại diện cho ngày trong tháng.
hours
Tùy chọn. Giá trị số nguyên đại diện cho giờ trong ngày.
minutes
Tùy chọn. Giá trị số nguyên đại diện cho phần phút của một thời gian.
seconds
Tùy chọn. Giá trị số nguyên đại diện cho phần giây của một thời gian.
milliseconds
Tùy chọn. Giá trị số nguyên đại diện cho phần mili giây của một thời gian.

Mô tả

Các thuộc tính

{{jsxref("Date.prototype")}}
Cho phép thêm thuộc tính vào một đối tượng JavaScript Date.
Date.length
Giá trị của Date.length là 7. Đây là số lượng các đối số được xử lý bởi hàm khởi tạo.

Các phương thức

{{jsxref("Date.now()")}}
Trả về giá trị số tương ứng với thời gian hiện tại - số mili giây trôi qua kể từ ngày 1 tháng 1 năm 1970, 00:00:00, giờ UTC, với giây phút nhuận được bỏ qua.
{{jsxref("Date.parse()")}}
Phân tích cú pháp của một chuỗi đại diện ngày tháng và trả về số mili giây kể từ ngày 1 tháng 1 năm 1970, 00:00:00, giờ UTC, với giây phút nhuận được bỏ qua.

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..

{{jsxref("Date.UTC()")}}
Chấp nhận các tham số giống với dạng dài nhất của hàm khởi tạo (tức là 2 đến 7) và trả về số mili giây kể từ ngày 1 tháng 1 năm 1970, 00:00:00 giờ UTC, với giây phút nhuận được bỏ qua.

Thể hiện của JavaScript 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.prototype Methods

{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/prototype', 'Methods')}}

Các ví dụ

Một số cách để tạo một đối tượng 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);

Các năm hai số ứng với 1900 - 1999

Để 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).

Tính thời gian trôi qua

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()")}}.

Thông số kỹ thuật

Đặ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.

Khả năng tương thích trình duyệt

{{CompatibilityTable}}
Đặ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.