Date.parse()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Phương thức tĩnh Date.parse() phân tích một biểu diễn chuỗi của một ngày và trả về timestamp của ngày đó.
Try it
// Standard date-time string format
const unixTimeZero = Date.parse("1970-01-01T00:00:00Z");
// Non-standard format resembling toUTCString()
const javaScriptRelease = Date.parse("04 Dec 1995 00:12:00 GMT");
console.log(unixTimeZero);
// Expected output: 0
console.log(javaScriptRelease);
// Expected output: 818035920000
Cú pháp
Date.parse(dateString)
Tham số
dateString-
Một chuỗi theo định dạng chuỗi ngày giờ. Xem tài liệu tham khảo được liên kết để biết các lưu ý khi sử dụng các định dạng khác nhau.
Giá trị trả về
Một số đại diện cho timestamp của ngày đã cho. Nếu dateString không thể được phân tích như một ngày hợp lệ, NaN sẽ được trả về.
Mô tả
Hàm này hữu ích để thiết lập giá trị ngày dựa trên các giá trị chuỗi, ví dụ kết hợp với phương thức setTime().
Các định dạng mà parse() có thể xử lý không được quy định rõ ràng, nhưng có một vài bất biến:
- Định dạng chuỗi ngày giờ (được tạo bởi
toISOString()) phải được hỗ trợ. - Nếu
xlà bất kỳ Date nào có lượng mili giây bằng không, thìx.valueOf()phải bằng bất kỳ giá trị nào trong số sau:Date.parse(x.toString()),Date.parse(x.toUTCString()),Date.parse(x.toISOString()). Điều này có nghĩa là các định dạng được tạo bởitoString()vàtoUTCString()cũng phải được hỗ trợ. - Đặc tả không yêu cầu hỗ trợ định dạng được tạo bởi
toLocaleString(). Tuy nhiên, các engine chính đều cố gắng hỗ trợ định dạngtoLocaleString("en-US").
Các định dạng khác được xác định bởi triển khai và có thể không hoạt động trên tất cả các trình duyệt. Một thư viện có thể giúp ích nếu cần hỗ trợ nhiều định dạng khác nhau. Trên thực tế, sự không đáng tin cậy của Date.parse() là một trong những động lực để giới thiệu API Temporal.
Vì parse() là một phương thức tĩnh của Date, bạn luôn sử dụng nó như Date.parse(), chứ không phải như phương thức của một đối tượng Date mà bạn đã tạo.
Ví dụ
>Sử dụng Date.parse()
Tất cả các lệnh gọi sau đây trả về 1546300800000. Lệnh gọi đầu tiên sẽ ngầm định là giờ UTC vì nó chỉ có ngày, và các lệnh khác chỉ định rõ múi giờ UTC.
Date.parse("2019-01-01");
Date.parse("2019-01-01T00:00:00.000Z");
Date.parse("2019-01-01T00:00:00.000+00:00");
Lệnh gọi sau không chỉ định múi giờ sẽ được đặt thành 2019-01-01 lúc 00:00:00 theo múi giờ địa phương của hệ thống, vì nó có cả ngày và giờ.
Date.parse("2019-01-01T00:00:00");
Định dạng toString() và toUTCString()
Ngoài định dạng chuỗi ngày giờ chuẩn, các định dạng toString() và toUTCString() cũng được hỗ trợ:
// định dạng toString()
Date.parse("Thu Jan 01 1970 00:00:00 GMT-0500 (Eastern Standard Time)");
// 18000000 trong tất cả các triển khai ở tất cả các múi giờ
// định dạng toUTCString()
Date.parse("Thu, 01 Jan 1970 00:00:00 GMT");
// 0 trong tất cả các triển khai ở tất cả các múi giờ
Chuỗi ngày không chuẩn
Note: Phần này chứa hành vi phụ thuộc triển khai có thể không nhất quán giữa các trình duyệt hoặc các phiên bản trình duyệt khác nhau. Đây không phải là bảng tương thích trình duyệt toàn diện và bạn nên luôn tự kiểm tra trước khi sử dụng bất kỳ định dạng nào trong mã của mình.
Các triển khai thường mặc định theo múi giờ địa phương khi chuỗi ngày không chuẩn. Để nhất quán, chúng ta sẽ giả định rằng runtime sử dụng múi giờ UTC, và trừ khi được chỉ định khác, đầu ra sẽ thay đổi theo múi giờ của thiết bị. Giờ tiết kiệm ánh sáng ban ngày (DST), của múi giờ địa phương, cũng có thể ảnh hưởng đến điều này.
Dưới đây là một số ví dụ khác về chuỗi ngày không chuẩn. Các trình duyệt rất khoan nhượng khi phân tích chuỗi ngày và có thể bỏ qua bất kỳ phần nào của chuỗi mà chúng không thể phân tích. Vì lý do tương thích, các trình duyệt thường sao chép hành vi của nhau, vì vậy các mẫu xử lý này có xu hướng lan truyền giữa các trình duyệt. Như đã nói ở trên, các ví dụ sau chỉ để minh họa và không toàn diện:
| Mô tả | Ví dụ | Chrome | Firefox | Safari |
|---|---|---|---|---|
| Số đơn | 0 (một chữ số) |
946684800000 (Jan 01 2000); NaN trong Firefox ≤122 | -62167219200000 (Jan 01 0000) | |
31 (hai chữ số) |
NaN | -61188912000000 (Jan 01 0031) | ||
999 (ba/bốn chữ số) |
-30641733102000 (Jan 01 0999) | |||
| Chuỗi ngày sử dụng các dấu phân cách khác nhau | 1970-01-01 (chuẩn) |
0 trong tất cả các múi giờ | ||
1970/01/01 |
0 | |||
1970,01,01 |
0 | NaN | ||
1970 01 01 |
0 | NaN | ||
Chuỗi trông giống toString() |
Thu Jan 01 1970 00:00:00Thu Jan 01 1970Jan 01 1970 00:00:00Jan 01 1970 |
0 | ||
Chuỗi trông giống toUTCString() |
Thu, 01 Jan 1970 00:00:00Thu, 01 Jan 197001 Jan 1970 00:00:0001 Jan 1970 |
0 | ||
| Thành phần ngày đầu tiên là 2 chữ số | 01-02-03 (phần đầu có thể là tháng hợp lệ) |
1041465600000 (Jan 02 2003) | -62132745600000 (Feb 03 0001) Lưu ý: Safari luôn giả định YY-MM-DD, nhưng MM/DD/YY. |
|
27-02-03 (phần đầu có thể là ngày hợp lệ nhưng không phải tháng) |
NaN | -61312291200000 (Feb 03 0027) | ||
49-02-03 (phần đầu không thể là ngày hợp lệ và <50) |
2495923200000 (Feb 03 2049) | -60617980800000 (Feb 03 0049) | ||
50-02-03 (phần đầu không thể là ngày hợp lệ và ≥50) |
-628300800000 (Feb 03 1950) | -60586444800000 (Feb 03 0050) | ||
| Thành phần ngày ngoài phạm vi | 2014-25-23Mar 32, 20142014/25/23 |
NaN | ||
2014-02-30 |
1393718400000 (Mar 02 2014) | NaN | ||
02/30/2014 |
1393718400000 | |||
| Ký tự thừa sau tên tháng | 04 Dec 199504 Decem 199504 December 1995 |
818031600000 | ||
04 DecFoo 1995 |
818031600000 Chỉ ba ký tự đầu tiên được đọc. Firefox ≤121 đọc đến tên tháng hợp lệ, do đó trả về NaN khi gặp "F". |
|||
04 De 1995 |
NaN | |||
Thông số kỹ thuật
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-date.parse> |