Nếu truyền vào một string, thay vì number, gọi
const timestamp = 1530826362;
new Date[timestamp * 1000];
2 sẽ parse giá trị đó, hay ho là ở chỗ nó tự đoán mò xem string truyền vào đang theo định dạng nào.
new Date["2020-07-21"];
new Date["2020-07"]; //July 1st 2020, 00:00:00
new Date["2020"]; //Jan 1st 2020, 00:00:00
new Date["07/22/2020"];
new Date["2020/07/22"];
new Date["2020/7/22"];
new Date["July 22, 2020"];
new Date["July 22, 2020 07:22:13"];
new Date["2020-07-22 07:22:13"];
new Date["2020-07-22T07:22:13"];
new Date["25 March 2020"];
new Date["25 Mar 2020"];
new Date["25 March, 2020"];
new Date["March 25, 2020"];
new Date["March 25 2020"];
new Date["March 2020"]; //Mar 1st 2020, 00:00:00
new Date["2020 March"]; //Mar 1st 2020, 00:00:00
new Date["2020 MARCH"]; //Mar 1st 2020, 00:00:00
new Date["2020 march"]; //Mar 1st 2020, 00:00:00
Việc này có một nguy hiểm, thứ tự ngày tháng có thể không đúng như chúng ta mong đợi.
Tốt nhất là cứ theo chuẩn quốc tế ISO 8601, string dạng thế này
`YYYY-MM-DDTHH:mm:ss:sssZ`;
Điểm lưu ý duy nhất của string này là chữ Z cuối cùng, nó đại diện cho UTC, nếu không có, tức là đang dùng giờ địa phương.
Dùng
const timestamp = 1530826362;
new Date[timestamp * 1000];
3, sẽ trả về
const timestamp = 1530826362;
new Date[timestamp * 1000];
4 [milli giây]
Date.parse["2020-07-22"];
Date.parse["2020-07"]; //July 1st 2020, 00:00:00
Date.parse["2020"]; //Jan 1st 2020, 00:00:00
Date.parse["07/22/2020"];
Date.parse["2020/07/22"];
Date.parse["2020/7/22"];
Date.parse["July 22, 2020"];
Date.parse["July 22, 2020 07:22:13"];
Date.parse["2020-07-22 07:22:13"];
Date.parse["2020-07-22T07:22:13"];
Hoặc là truyền theo dạng năm, tháng [từ 0], ngày, giờ, phút, giây, mili giây
new Date[2020, 6, 22, 7, 22, 13, 0];
new Date[2020, 6, 22];
2. Timezone - Khu vực
Khi khởi tạo một giá trị ngày giờ chúng ta có thể truyền thêm tham số timezone, nếu không muốn dùng UTC
// bằng cách thêm +HOURS
new Date["July 22, 2018 07:22:13 +0700"];
// bằng cách thêm tên , ICT gồm Campuchia, Lào, Thái Lan, Việt Nam
new Date["July 22, 2020 07:22:13 [ICT]"];
Nếu truyền sai giá trị timezone, javascript sẽ dùng UTC, không quăng lỗi. Nếu giá trị date đưa vào sai, xảy ra lỗi 'Invalid Date'
3. Convert và Format kiểu Date
Với một Date object, chúng ta có khá nhiều lựa chọn để chuyển giá trị
const timestamp = 1530826362;
new Date[timestamp * 1000];
5
const date = new Date["July 22, 2020 07:22:13"];
date.toString[];
// "Sun Jul 22 2020 07:22:13 GMT+0200 [Central European Summer Time]"
date.toTimeString[];
//"07:22:13 GMT+0200 [Central European Summer Time]"
date.toUTCString[];
//"Sun, 22 Jul 2020 05:22:13 GMT"
date.toDateString[];
//"Sun Jul 22 2020"
date.toISOString[];
//"2018-07-22T05:22:13.000Z" [ISO 8601 format]
date.toLocaleString[];
//"22/07/2020, 07:22:13"
date.toLocaleTimeString[];
//"07:22:13"
date.getTime[];
date.getTime[];
4.Các phương thức của Date Object để lấy giá trị
new Date[0];
0
Các phương thức trên sẽ có thêm phiên bản UTC, trả về giá trị UTC không phụ thuộc vào giá trị timezone hiện tại
new Date[0];
1
5. Thay đổi giá trị
Các phương thức để cập nhập lại giá trị của Date
new Date[0];
2
Lưu ý, nếu ta dùng
const timestamp = 1530826362;
new Date[timestamp * 1000];
6 sẽ vẫn ok, nó sẽ tự động cộng lên thành một ngày mới, tương tự cho setMinutes, setSeconds
Với
const timestamp = 1530826362;
new Date[timestamp * 1000];
7 chúng ta có thể truyền tham số kiểu
const timestamp = 1530826362;
new Date[timestamp * 1000];
8 để cập nhập giờ-phút-giây-mili giây.
Phiên bản UTC
new Date[0];
3
6. Lấy giá trị timestamp hiện tại
Nếu muốn lấy timestamp hiện tại [mili giây]
new Date[0];
4
7. Javascript tự động cộng thêm giá trị ngày giờ
Nếu chúng ta đưa vào giá trị ngày lớn hơn 31, javascript sẽ cộng lên thành tháng tiếp theo, chứ không báo lỗi [không rõ là nên vui hay buồn với tính năng này]
new Date[0];
5
8. Định dạng ngày giờ theo vùng miền
Nếu trình duyệt hỗ trợ Intl, ta có thể sử dụng để bản địa hóa các giá trị number, string, currencies, date
new Date[0];
6
new Date[0];
7
9. So sánh 2 giá trị ngày giờ
Sử dụng
const timestamp = 1530826362;
new Date[timestamp * 1000];
9 để tính toán sự giá trị ngày tháng, chính xác tới mili giây nhé
new Date[0];
8
Kiểm tra 2 giá trị Date có bằng nhau không
new Date[0];
9
Lưu ý là đang so sánh đến mili giây, nên nếu so sánh 2 giá trị July 10, 2018 07:22:13 và July 10, 2018 thì nó sẽ không bằng nhau nhaa