Thứ nhất, một chút của nền: IE11 thực hiện các ECMA-402 ECMAScript Quốc tế hóa API đã xác định lại Date.prototype.toLocaleString
(cũng như toLocaleDateString
và toLocaleTimeString
) làm cuộc gọi đến format
trên Intl.DateTimeFormat
. Như vậy, d.toLocaleString()
tương đương với
Intl.DateTimeFormat(undefined, {
year: 'numeric',
month: 'numeric',
day: 'numeric',
hour: 'numeric',
minute: 'numeric',
second: 'numeric'
}).format(d)
Bạn có thể nghĩ rằng đây là khá rõ ràng nhưng các trình duyệt đều cho phép một lượng lớn mất nhiều thời gian với những gì các định dạng hỗ trợ họ và những gì nhân vật soạn định dạng. Điều này là do thiết kế - với tất cả các ngôn ngữ và ngôn ngữ trên khắp hành tinh, xác định điều này sẽ khá nặng nề và rất khó khăn để giữ cho up-to-date. Vì lý do này, bạn không thể mong đợi để có thể so sánh kết quả của toLocaleString
trên các trình duyệt hoặc thậm chí mong đợi cùng một trình duyệt tiếp tục đưa ra kết quả tương tự từ bản phát hành đến bản phát hành. Khi dữ liệu địa phương cơ bản thay đổi (có lẽ vì tùy chỉnh cục bộ đã thay đổi hoặc có nhiều dữ liệu hơn hoặc các định dạng tốt hơn được thêm vào), định dạng này cũng được trả về từ API này.
Việc rút tiền từ điều này là bạn nên cố gắng không dựa vào so sánh đầu ra của các API toLocaleString
với một số giá trị tĩnh trong ứng dụng của bạn. Hơn nữa, được đưa ra ngày d
, Date.parse(d.toLocaleString())
đôi khi có thể hoạt động nhưng không hoạt động tùy thuộc vào ngôn ngữ, vì vậy tốt nhất nên tránh điều này.
Với điều đó đã nói, en-US tương đối ổn định và đối với hầu hết các trình duyệt phần (hiện tại) đồng ý về định dạng cơ bản đó là gì. Tuy nhiên, IE chèn các ký tự kiểm soát hai chiều xung quanh ngày. Điều này là do thiết kế để văn bản đầu ra sẽ chảy đúng khi nối với văn bản khác. Điều này đặc biệt quan trọng khi trộn nội dung LTR và RTL như ghép một ngày RTL được định dạng với văn bản LTR.
Nguồn
2014-09-12 17:00:37
phiên bản IE nào? – danwellman
internet explorer 11. –
Xem [Ted Bicknell's - Một ngày tồi tệ với Internet Explorer 11: Sự cố với các ký tự Unicode mới trong chuỗi ngày Javascript] (https://www.csgpro.com/blog/2016/08/a-bad- date-with-internet-explorer-11-trouble-với-new-unicode-characters-in-javascript-date-strings) – KyleMit