Tôi chỉ thấy rằng nếu tôi sử dụng new Date('2015-1-1')
, thì thời gian không có hiệu ứng múi giờ, nhưng nếu tôi sử dụng new Date('2015-01-01')
thì thời gian có hiệu ứng múi giờ trong Node.js.Đầu ra ngày ('2015-1-1') khác với Ngày (2015-01-01)
tôi ra 4 Date()
:
console.log(new Date('2015-1-1'));
console.log(new Date('2015-01-1'));
console.log(new Date('2015-1-01'));
console.log(new Date('2015-01-01'));
đầu ra là
Thu Jan 01 2015 00:00:00 GMT+0800 (CST)
Thu Jan 01 2015 00:00:00 GMT+0800 (CST)
Thu Jan 01 2015 00:00:00 GMT+0800 (CST)
Thu Jan 01 2015 08:00:00 GMT+0800 (CST)
bạn sẽ nhìn thấy lần cuối cùng là 08:00:00
bởi vì tôi là trong 8 múi giờ.
Tôi nghĩ đầu ra phụ thuộc vào chữ số của tháng hoặc số ngày. Khi đó là 10, 11 hoặc 12, đầu ra luôn là 08:00:00
Tôi tự hỏi tại sao và nếu có cách nào tốt hơn để xử lý việc này ngoại trừ kiểm tra thủ công bit tháng và số ngày?
tôi nhận được đầu ra tương tự khi tôi chạy ví dụ của bạn trên Chrome bảng điều khiển Javascript để nó có vẻ là một lỗi/tính năng V8. – HBP
Trong Firefox, tôi nhận được ngày không hợp lệ cho tất cả trừ dòng cuối cùng. Ngoài ra, tôi đã tìm thấy điều này từ MDN: [Sự khác biệt trong múi giờ giả định] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse#Differences_in_assumed_time_zone) – Kobi
Tuy nhiên một vấn đề khác với phân tích chuỗi ngày tháng. ** Chỉ ** cách đáng tin cậy để phân tích cú pháp chuỗi ngày là thực hiện thủ công (mặc dù thư viện có thể trợ giúp về điều đó). 3 chuỗi đầu tiên không chính xác là chuỗi ISO 8601 do đó có thể được phân tích cú pháp, tuy nhiên việc triển khai thực hiện mong muốn. Cuối cùng là định dạng ISO 8601. Mỗi ECMAScript 2015 nó được phân tích cú pháp là "cục bộ" thành hệ thống máy chủ. Dưới ES5, nó phải được phân tích cú pháp là UTC, và trước đó (tức là ECMAScript ed 3 trở về trước) mọi thứ, kể cả NaN. – RobG