Hướng dẫn what is iso 8601 date format javascript? - javascript định dạng ngày iso 8601 là gì?

Phương thức toISOString() trả về một chuỗi ở định dạng ISO mở rộng được đơn giản hóa (ISO 8601), luôn dài 24 hoặc 27 ký tự (YYYY-MM-DDTHH:mm:ss.sssZ hoặc ±YYYYYY-MM-DDTHH:mm:ss.sssZ, tương ứng). Timezone luôn không có độ lệch UTC, như được biểu thị bằng hậu tố Z.toISOString() method returns a string in simplified extended ISO format (ISO 8601), which is always 24 or 27 characters long (YYYY-MM-DDTHH:mm:ss.sssZ or ±YYYYYY-MM-DDTHH:mm:ss.sssZ, respectively). The timezone is always zero UTC offset, as denoted by the suffix Z.

Thử nó

Cú pháp

Giá trị trả về

Một chuỗi đại diện cho ngày đã cho ở định dạng ISO 8601 theo thời gian phổ quát. Đó là định dạng giống như mô hình được yêu cầu được công nhận bởi

now = moment().format("YYYY-MM-DDTHH:mm:ss.SSSZZ")
// "2013-03-08T20:11:11.234+0100"

now = moment().utc().format("YYYY-MM-DDTHH:mm:ss.SSSZZ")
// "2013-03-08T19:11:11.234+0000"

now = moment().utc().format("YYYY-MM-DDTHH:mm:ss") + "Z"
// "2013-03-08T19:11:11Z" <- better use the native .toISOString() 
0.

Ví dụ

Sử dụng toisostring ()

const today = new Date('05 October 2011 14:48 UTC');

console.log(today.toISOString()); // Returns 2011-10-05T14:48:00.000Z

Ví dụ trên sử dụng phân tích cú pháp của một giá trị chuỗi không tiêu chuẩn có thể không được phân tích chính xác trong các trình duyệt không phải là mozilla.

Thông số kỹ thuật

Sự chỉ rõ
Đặc tả ngôn ngữ Ecmascript # sec-date.prototype.toisostring
# sec-date.prototype.toisostring

Tính tương thích của trình duyệt web

Bảng BCD chỉ tải trong trình duyệt

Xem thêm

Lưu ý: Câu trả lời này vẫn đang nhận được các UPVOTES kể từ 2022-03. Thư viện thời điểm.js không được dùng nữa. Đây là hai lựa chọn thay thế chính: Luxon và Day.js, những người khác được đề cập trong liên kết khấu hao.: This answer is still getting upvotes as of 2022-03. The moment.js library is deprecated. These are the two main alternatives: Luxon and Day.js, others are mentioned in the deprecation link.

Luxon

Luxon có thể được coi là sự phát triển của khoảnh khắc. Nó được tác giả bởi Isaac Cambron, một người đóng góp lâu năm cho khoảnh khắc. Vui lòng đọc tại sao Luxon tồn tại? và các trang cho người dùng trong các tài liệu Luxon.

Địa phương: INTL cung cấp múi giờ: INTL cung cấp

Day.js

Day.js được thiết kế để thay thế tối giản cho khoảnh khắc.js, sử dụng API tương tự. Nó không phải là một sự thay thế thả vào, nhưng nếu bạn đã quen với việc sử dụng API của khoảnh khắc và muốn di chuyển nhanh chóng, hãy xem xét sử dụng Day.js.

Địa phương: Các tệp dữ liệu tùy chỉnh có thể được nhập múi giờ riêng lẻ: INTL được cung cấp, thông qua plugin

Tôi sử dụng Day.js vì sự khác biệt về kích thước, nhưng Luxon dễ giải quyết hơn.


Hầu như mọi phương thức TO-ISO trên web đều giảm thông tin múi giờ bằng cách áp dụng chuyển đổi thành thời gian "Z" ULU (UTC) trước khi xuất chuỗi. Bản gốc của trình duyệt .toisostring () cũng làm giảm thông tin về thời gian.

Điều này loại bỏ thông tin có giá trị, như máy chủ hoặc người nhận, luôn có thể chuyển đổi một ngày ISO đầy đủ sang thời gian Zulu hoặc bất kỳ múi giờ nào mà nó yêu cầu, trong khi vẫn nhận được thông tin múi giờ của người gửi.

Giải pháp tốt nhất tôi đi qua là sử dụng thư viện JavaScript khoảnh khắc và sử dụng mã sau:Moment.js javascript library and use the following code:

Để có được thời gian ISO hiện tại với thông tin thời gian và mili giây

now = moment().format("YYYY-MM-DDTHH:mm:ss.SSSZZ")
// "2013-03-08T20:11:11.234+0100"

now = moment().utc().format("YYYY-MM-DDTHH:mm:ss.SSSZZ")
// "2013-03-08T19:11:11.234+0000"

now = moment().utc().format("YYYY-MM-DDTHH:mm:ss") + "Z"
// "2013-03-08T19:11:11Z" <- better use the native .toISOString() 

Để có được thời gian ISO của một đối tượng ngày JavaScript bản địa với thông tin về thời gian nhưng không có mili giây

var current_time = Date.now();
moment(current_time).format("YYYY-MM-DDTHH:mm:ssZZ")

Điều này có thể được kết hợp với date.js để có các hàm như date.today () có kết quả sau đó có thể được truyền đến thời điểm.

Một chuỗi ngày được định dạng như thế này là Trình biên dịch JSON và cho vay tốt để được lưu trữ vào cơ sở dữ liệu. Python và C# dường như thích nó.

Phương thức ngày.parse () có thể giúp trong khi xử lý các tính toán bao gồm cả ngày. Các tính toán này dễ dàng hơn nhiều, chính xác hơn và được viết logic hơn khi ngày cơ bản được biểu diễn dưới dạng một số chứ không phải là một chuỗi.

Phương thức ngày.parse () lấy một đối số, một chuỗi đại diện cho một ngày và trả về số mili giây đã trôi qua trong khoảng thời gian từ ngày 1 tháng 1 năm 1970, 00:00:00 UTC và ngày được cung cấp. Nếu chuỗi được cung cấp không hợp lệ hoặc không được công nhận là định dạng ngày vì một số lý do, phương thức ngày.parse () trả về nan.Date.parse() method takes as an argument a string representing a date, and returns the number of milliseconds that have elapsed between January 1, 1970, 00:00:00 UTC and the date provided. If the string provided is invalid, or is not recognized as a date format for some reason, the Date.parse() method returns NaN.

Theo MDN, không nên sử dụng Date.Parse. Lý do được cung cấp là: Cho đến khi ES5, phân tích các chuỗi hoàn toàn phụ thuộc vào việc thực hiện. Vẫn còn nhiều sự khác biệt trong cách các chuỗi phân tích phân tích khác nhau, do đó các chuỗi ngày nên được phân tích thủ công (một thư viện có thể giúp đỡ nếu nhiều định dạng khác nhau được cung cấp). Để nhận ra điều này, chúng tôi cung cấp một số tùy chọn khác dưới đây trong việc chuyển đổi chuỗi ngày thành dấu thời gian UNIX.Their reasoning provided is: ”… until ES5, parsing of strings was entirely implementation dependent. There are still many differences in how different hosts parse date strings, therefore date strings should be manually parsed (a library can help if many different formats are to be accommodated).” In recognition of this, we provide some other options below under Convert a date String into a UNIX timestamp.

Cú pháp

Phương thức ngày.parse () có cú pháp sau:

Date.parse(dateString)

Phương thức này chỉ chấp nhận một tham số duy nhất:

Datestring - Một chuỗi đại diện cho một ngày trong định dạng mở rộng lịch ISO 8601. Lưu ý - Các trình duyệt khác nhau có thể hỗ trợ các định dạng khác ngoài ISO 8601. – A string representing a date in the ISO 8601 calendar date extended format. Note – different browsers may support other formats in addition to ISO 8601.

Định dạng ngày ISO 8601 như sau: Yyyy-MM-DDTHH: MM: SS.SSSZ. Các ký tự đại diện cho dữ liệu sau:

  • YYYY - Năm hiện tại, bằng bốn chữ số (ví dụ: năm 2020)
  • Mm - tháng hiện tại, với 0 hàng đầu (ví dụ: 09, 11)
  • DD - Ngày hiện tại của tháng, với 0 hàng đầu (ví dụ: 07, 17)
  • T - Nhân vật theo nghĩa đen T, được sử dụng để đánh dấu sự khởi đầu của dấu thời gian
  • HH - giờ hiện tại, ở định dạng 24 giờ (ví dụ: 09, 13, 22)
  • mm - phút hiện tại của giờ, với 0 hàng đầu khi cần thiết (ví dụ: 08, 54)
  • SS.SSS - Các giây hiện tại và mili giây (ví dụ: 03.444, 24.536)
  • Z - ký tự theo nghĩa đen Z, được sử dụng để đánh dấu phần cuối của dấu thời gian

Thông tin thêm về định dạng chuỗi thời gian ngày có thể được tìm thấy ở đây.

Ở mức tối thiểu, năm là bắt buộc. Nếu một giá trị không được cung cấp trong chuỗi đầu vào, nó sẽ được cung cấp giá trị tối thiểu của nó (nghĩa là tháng sẽ là tháng 1 nếu không có tháng nào được cung cấp, thời gian sẽ là nửa đêm nếu không có dấu thời gian được cung cấp). Nếu giá trị được chỉ định không hợp lệ cho bất kỳ phần nào của chuỗi dấu thời gian (ví dụ: tháng được đặt thành ‘00,), NAN sẽ được trả về.NaN is returned.

Nhiều năm có thể được thông qua dưới dạng bốn chữ số thập phân (tức là năm 2020) hoặc 6 chữ số thập phân với toán tử + hoặc - toán tử được đính kèm.+ or operator attached.

Ví dụ cơ bản

Dưới đây là một số ví dụ cơ bản về cách sử dụng ngày.parse () để phân tích chuỗi ngày:Date.parse() to parse a date string:

const unixZeroT = Date.parse('1970');
console.log(unixZeroT); // expected output: 0

Trong ví dụ trên, chỉ có năm được chỉ định, khiến dấu thời gian mặc định đến nửa đêm, ngày 1 tháng 1 năm 1970. Vì điều này thể hiện giá trị khởi đầu cho so sánh dấu thời gian, số 0 được trả về.

const justNow = Date.parse('+002020-08-09T15:00:00.000');
console.log(justNow); // expected output: 1596974400000

Trong ví dụ trên, năm được chỉ định với 6 chữ số và toán tử cộng ở đầu. Chuỗi này là viết tắt của ngày 9 tháng 8 năm 2020 15:00 PM UTC và giá trị trả lại đại diện cho số mili giây giữa ngày đó đến ngày 1 tháng 1 năm 1970 00:00 AM UTC.

Chuyển đổi chuỗi ngày thành dấu thời gian unix

Theo hướng dẫn của MDN, có hai phương pháp bổ sung có thể được sử dụng để có được biểu diễn số của một ngày nhất định. Hai phương thức chúng ta sẽ xem xét là date.now () và getTime ().

const date = new Date();
const time1 = Date.now(date);
console.log(time1); // expected output: 1596987649975
const time2 = date.getTime();
console.log(time2); // expected output: 1596987649975

Trong các ví dụ trên, ngày biến được gán với chuỗi ngày. Cả ngày.now () và getTime () chuyển đổi chuỗi ngày thành dấu thời gian unix.Date.now() and getTime() convert the date string into a UNIX timestamp.

Lưu ý: Kết quả của cả hai phương pháp ở trên đều giống hệt nhau, vì chúng đại diện cho các phương tiện khác nhau để có được cùng một thông tin - số lượng mili giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970. the results of both methods above are exactly the same, as they represent different means of getting the same information – the number of milliseconds elapsed since January 1, 1970.

Những bài viết liên quan:

JavaScript - Cách định dạng ngày

JavaScript - Cách nhận các phím và giá trị đối tượng

JavaScript - Cách sử dụng thuộc tính tùy chọn đã chọn

Định dạng ngày ISO trong JavaScript là gì?

Phương thức toisoString () trả về một chuỗi ở định dạng ISO mở rộng được đơn giản hóa (ISO 8601), luôn dài 24 hoặc 27 ký tự (Yyyy-MM-DDTHH: MM: SS.SSSZ hoặc ± YYYYYY-MM-DDTHH: MM: SS.SSSZ, tương ứng).Timezone luôn không có độ lệch UTC, như được biểu thị bằng hậu tố Z.YYYY-MM-DDTHH:mm:ss.sssZ or ±YYYYYY-MM-DDTHH:mm:ss.sssZ , respectively). The timezone is always zero UTC offset, as denoted by the suffix Z .

ISO 8601 có định dạng UTC không?

UTC được thay thế bằng z là bù 0 UTC.Thời gian UTC trong ISO-8601 là 11: 27: 34z.Lưu ý rằng chữ Z không có khoảng trống.... Ngày và giờ UTC ở các định dạng khác nhau ..

Định dạng ngày mặc định của JS là gì?

Định dạng chuỗi phải là: Yyyy-mm-ddthh: MM: SS.SSSZ, Trong đó: Yyyy-MM-DD-là ngày: Ngày tháng năm.Nhân vật "T" được sử dụng làm dấu phân cách.YYYY-MM-DDTHH:mm:ss. sssZ , where: YYYY-MM-DD – is the date: year-month-day. The character "T" is used as the delimiter.

ISO 8601 là múi giờ nào?

Thời gian tọa độ phổ quát là thời gian tại không có kinh tuyến, gần Greenwich, Anh.UTC là một giá trị DateTime sử dụng hình thức cơ bản ISO 8601 YYYYMMDDT HHMMSS+|-HHMM hoặc ISO 8601 Mẫu mở rộng YYYY-MM-DDT HH: MM: SS+|-HH: MM. is the time at the zero meridian, near Greenwich, England. UTC is a datetime value that uses the ISO 8601 basic form yyyymmddT hhmmss+|– hhmm or the ISO 8601 extended form yyyy-mm-ddT hh:mm:ss+|– hh:mm.