CLASSFUNC BLOG
We Share Our Knowledge
xử lý Date trong JavaScript
Front-endJavaScript
Lê Thành
14 Th01 2021 10:49

Dev rất thường xuyên phải xử lý những dữ liệu từ API hay server trả về.

Kiểu Date sẽ xuất hiện trong các biến như `created_at`, `updated_at`

Việc xử lý sẽ gặp khó khăn nếu mỗi người lưu một kiểu riêng (int, string, Date, timestamp), nhưng vẫn hợp lệ với kiểu Date. Vậy ta sẽ viết 1 hàm trong JS để xử lý được tất cả những dạng dữ liệu này.

Phương pháp ở đây là chúng ta sẽ quy mọi kiểu dữ liệu về mili-seconds, từ dạng này ta sẽ dùng `new Date(mili-seconds)` để tạo kiểu Date;

Ta có code như sau:

import moment from 'moment'; function isDate(d) { return d instanceof Date && !isNaN(d.valueOf()); } const toMs = (ts) => { if (!ts) return null; if (Number.isInteger(ts)) return ts; if (isDate(ts)) return ts.getTime(); if (moment.isMoment(ts)) return ts.valueOf(); // trường hợp dữ liệu timestamp (ví dụ của firestore) // firestore Client SDK trả về ts = {seconds, nanoseconds} // firestore Admin SDK trả về ts = {_seconds, _nanoseconds} if (ts?.seconds || ts?._seconds) { return ((ts?.seconds || ts?._seconds) + (ts?.nanoseconds || ts?._nanoseconds || 0) / 1e9) * 1000; } // trường hợp còn lại sẽ xử lý với Date String; const date = new Date(ts); return date?.getTime(); }; const toDate = (ts) => { return new Date(toMs(ts)); }; export { toDate, toMs, };

Chúc các bạn có trải nghiệm vui vẻ với Date 💯