Πηγαίνετε πέρα από τις ενσωματωμένες δυνατότητες ημερομηνίας και ώρας της JavaScript με μία από αυτές τις βιβλιοθήκες αντικατάστασης.
Η ενσωματωμένη υποστήριξη της JavaScript για τη διαχείριση ημερομηνιών είναι χρήσιμη, αλλά μπορεί να είναι δύσκολη στη χρήση της. Πολύπλοκες λειτουργίες όπως οι μετατροπές ζώνης ώρας και η μορφοποίηση ημερομηνίας είναι συχνά προκλητικές.
Ευτυχώς, υπάρχουν πολλά πακέτα που κάνουν την εργασία με ημερομηνίες και ώρες σε JavaScript λιγότερο αγχωτική. Εδώ, θα μάθετε για μερικά από αυτά τα πακέτα και πώς μπορείτε να ξεκινήσετε να εργάζεστε σε αυτά τα πακέτα.
Όταν πρόκειται για εργασία με ημερομηνίες και ώρες, το εγγενές αντικείμενο JavaScript Date έχει περιορισμένη λειτουργικότητα.
Το Moment.js, μια βιβλιοθήκη JavaScript, εισήγαγε πολλές δυνατότητες που δεν ήταν διαθέσιμες στο εγγενές αντικείμενο Date. Ως αποτέλεσμα, έχει γίνει η πιο δημοφιλής βιβλιοθήκη για εργασία με ημερομηνίες και ώρες.
Για να εγκαταστήσετε το Moment.js με npm, εκτελέστε την ακόλουθη εντολή από τον κατάλογο του έργου σας:
npm εγκαθιστώ στιγμή
Μετά την εγκατάσταση, μπορείτε να εισαγάγετε το Moment.js στο έργο σας και να εκτελέσετε λειτουργίες με τη βιβλιοθήκη:
συνθ στιγμή = απαιτώ('στιγμή');
συνθ now = moment();
συνθ nowString = now.format('ΕΕΕΕ-ΜΜ-ΗΗ ΩΩ: μλ: δδ');
κονσόλα.κούτσουρο(«Η τρέχουσα ημερομηνία και ώρα είναι ${nowString}`);
Αυτό το απόσπασμα κώδικα εισάγει τη βιβλιοθήκη Moment.js και δημιουργεί ένα αντικείμενο στιγμής χρησιμοποιώντας την τρέχουσα ημερομηνία και ώρα με το στιγμή() λειτουργία. Στη συνέχεια, δείχνει πώς να μορφοποιήσετε το αντικείμενο ημερομηνίας που δημιουργήθηκε ως συμβολοσειρά με το μορφή() μέθοδος, η οποία παίρνει μια μορφή ημερομηνίας/ώρας ως όρισμα.
Μπορείτε επίσης να χρησιμοποιήσετε αυτήν τη βιβλιοθήκη για να προσθέσετε και να αφαιρέσετε χρονικά διαστήματα:
συνθ addTenMinutes = moment().add(10, 'λεπτά');
κονσόλα.κούτσουρο(`${addTenMinutes.format('h: mm a')}`);
συνθ subtractTwoDays = moment().subtract(2, 'ημέρες');
κονσόλα.κούτσουρο(`${subtractTwoDays.format("ηηη, ΜΜΜΜ Ναι ΕΕΕΕ")}`);
Το πρόγραμμα καταγράφει δύο μεταβλητές στην κονσόλα, σε διαφορετικές μορφές. Ο πρώτος, addTenMiutes, κρατά το αποτέλεσμα της προσθήκης 10 λεπτών στην τρέχουσα ημερομηνία και ώρα. Το δεύτερο, αφαίρεση δύο ημερών, έχει την τρέχουσα τιμή ημερομηνίας και ώρας με αφαίρεση δύο ημερών από αυτήν.
Το Moment.js μπορεί να εκτελέσει άλλες λειτουργίες, όπως έλεγχο για δίσεκτα έτη και μετατροπή από μια μορφή ημερομηνίας σε άλλη.
Είναι σημαντικό να σημειωθεί ότι το Moment.js δεν διατηρείται πλέον από την βασική ομάδα προγραμματιστών του. Οι προγραμματιστές συμβουλεύουν να χρησιμοποιήσετε μια εναλλακτική λύση όπως το Luxon.js.
Το Luxon.js είναι μια ισχυρή και πιο σύγχρονη βιβλιοθήκη JavaScript για εργασία με ημερομηνίες. Μια εναλλακτική λύση στο Moment.js, αντιμετωπίζει περιορισμούς της παλαιότερης βιβλιοθήκης, όπως η μεταβλητότητα.
Μπορείτε να εγκαταστήσετε το Luxon με npm και μετά να το εισαγάγετε Ημερομηνία ώρα κλάση στο έργο σας Node.js χρησιμοποιώντας το απαιτώ() λειτουργία:
συνθ { DateTime } = απαιτώ("Λούξον");
Στο Luxon, τα αντικείμενα DateTime αναφέρονται σε στιγμιότυπα χρόνου που φτάνουν μέχρι τα χιλιοστά του δευτερολέπτου.
Μπορείτε να δημιουργήσετε νέα Ημερομηνία ώρα αντικείμενα και πρόσβαση στα στοιχεία τους, όπως έτος, μήνας, λεπτό και δευτερόλεπτο:
συνθ now = DateTime.now();
συνθ έτος = τώρα.έτος;
συνθ λεπτό = τώρα.λεπτό;
συνθ δεύτερος = τώρα.δεύτερος;
Αυτός ο κώδικας δημιουργεί ένα νέο Ημερομηνία ώρα αντικείμενο που αντιπροσωπεύει την τρέχουσα ημερομηνία και ώρα χρησιμοποιώντας το τώρα() μέθοδος. Στη συνέχεια, έχει πρόσβαση στα στοιχεία αυτής της ημερομηνίας χρησιμοποιώντας το έτος, λεπτό, και δεύτερος ιδιότητες.
Μια σημαντική διαφορά μεταξύ του Luxon.js και του Moment.js είναι ο αμετάβλητος χαρακτήρας του. Όλα τα αντικείμενα DateTime είναι αμετάβλητα στο Luxon, πράγμα που σημαίνει ότι δεν μπορείτε να τροποποιήσετε τις ιδιότητες DateTime. Αντίθετα, μπορείτε να δημιουργήσετε νέες παρουσίες DateTime από υπάρχουσες.
Για παράδειγμα:
συνθ now = DateTime.now();
συνθ αύριο = τώρα.plus({ ημέρες: 1 });
Αυτός ο κώδικας δημιουργεί ένα νέο Ημερομηνία ώρα αντικείμενο με όνομα αύριο βασισμένο στο τώρα αντικείμενο, χρησιμοποιώντας το συν μέθοδο, μεταβιβάζοντάς της μια τιμή 1 ημέρας ως όρισμα. Η μέθοδος συν δημιουργεί ένα νέο αντικείμενο DateTime με τον καθορισμένο αριθμό ημερών να προστίθεται στο αρχικό αντικείμενο.
Ένα άλλο πλεονέκτημα του Luxon.js είναι η αξιόπιστη υποστήριξη ζώνης ώρας, η οποία είναι απαραίτητη για την εργασία με ημερομηνίες και ώρες σε σύγχρονες εφαρμογές web. Η βιβλιοθήκη χρησιμοποιεί το API διεθνοποίησης σε σύγχρονα προγράμματα περιήγησης για την παροχή ακριβούς υποστήριξης ζώνης ώρας.
Ωστόσο, ένα από τα μειονεκτήματα του Luxon.js είναι οι περιορισμένοι κοινοτικοί πόροι του.
Το Date-fns είναι μια πολύ ελαφριά βιβλιοθήκη JavaScript που έχει σχεδιαστεί για εργασία με ημερομηνίες και ώρες. Βασίζεται στο εγγενές αντικείμενο JavaScript.
Χρήσεις Date-fns τεχνικές λειτουργικού προγραμματισμού και ενσωματώνει μια αμετάβλητη λειτουργία, η οποία κάνει την εργασία με ημερομηνίες πιο απλή και μειώνει την πιθανότητα σφαλμάτων στον κώδικά σας.
Αφού εγκαταστήσετε το date-fns με npm, εισαγάγετε το πακέτο στο πρόγραμμά σας χρησιμοποιώντας τη συνάρτηση απαίτησης:
συνθ { format, addDays } = απαιτώ('date-fns');
Το Date-fns είναι αρθρωτό. Περιέχει πολλές λειτουργίες στις οποίες μπορείτε να έχετε πρόσβαση καταστρέφοντας το πακέτο, όπως φαίνεται στο μπλοκ κώδικα παραπάνω. Ο κώδικας εισάγει μόνο τη μορφή και οι λειτουργίες addDays από τη βιβλιοθήκη date-fns.
Ακολουθεί ένα παράδειγμα του τρόπου χρήσης και των δύο αυτών συναρτήσεων:
συνθ σήμερα = νέοςΗμερομηνία();
συνθ formattedDate = μορφή (σήμερα, 'εεεε-ΜΜ-ηη');
κονσόλα.log (formattedDate);
συνθ αύριο = μορφή (addDays (σήμερα, 1), 'εεεε-ΜΜ-ηη');
κονσόλα.log (αύριο);
Αυτό το πρόγραμμα δείχνει τη χρήση της βιβλιοθήκης date-fns σε JavaScript για τη μορφοποίηση και τον χειρισμό ημερομηνιών.
Δημιουργεί ένα νέο Ημερομηνία αντικείμενο που αντιπροσωπεύει την τρέχουσα ημερομηνία. Μορφοποιεί την τρέχουσα ημερομηνία χρησιμοποιώντας το μορφή λειτουργία από τη βιβλιοθήκη date-fns.
Στη συνέχεια χρησιμοποιεί το addDays λειτουργία για τη δημιουργία ενός νέου αντικειμένου Ημερομηνία που αντιπροσωπεύει την αυριανή ημερομηνία, το μορφοποιεί χρησιμοποιώντας το μορφή λειτουργία και καταγράφει τόσο την τρέχουσα ημερομηνία όσο και την αυριανή ημερομηνία στην κονσόλα στο "εεεε-ΜΜ-ηη" μορφή.
Ένα μειονέκτημα στη χρήση του Date-fns είναι ότι δεν παρέχει υποστήριξη ζώνης ώρας. Αντίθετα, χρησιμοποιεί μια ξεχωριστή βιβλιοθήκη για να εργαστεί με ζώνες ώρας χρησιμοποιώντας βοηθητικές λειτουργίες.
Η Day.js, μια άλλη πολύ ελαφριά βιβλιοθήκη, είναι μια καλή επιλογή αν ψάχνετε για μια αμετάβλητη, μικρότερη, πιο γρήγορη εναλλακτική στο Moment.js.
Μπορείτε να εγκαταστήσετε το Day.js ως πακέτο στο έργο JavaScript εκτελώντας την ακόλουθη εντολή npm:
npm εγκαθιστώ dayjs
Για να εισαγάγετε το Day.js στο έργο σας μετά την εγκατάσταση, μπορείτε να χρησιμοποιήσετε τον ακόλουθο κώδικα:
συνθ dayjs = απαιτώ('dayjs')
Ακολουθούν ορισμένες βασικές λειτουργίες και μέθοδοι που είναι διαθέσιμες στο Day.js
συνθ now = dayjs();
συνθ ημερομηνία = dayjs('2023-03-23', 'ΕΕΕΕ-ΜΜ-ΗΗ');
συνθ μήνας = ημερομηνία.μήνας();
συνθ formattedDate = date.format('MMMM D, ΕΕΕΕ');
συνθ nextWeek = date.add(1, 'εβδομάδα');
Ο παραπάνω κώδικας δημιουργεί ένα νέο αντικείμενο Day.js που αντιπροσωπεύει την τρέχουσα ημερομηνία και ώρα, αναλύει μια συμβολοσειρά ημερομηνίας με προσαρμοσμένη μορφή και λαμβάνει τον μήνα από το ημερομηνία μεταβλητός. Δείχνει επίσης πώς να μορφοποιήσετε και να προσθέσετε σε μια παρουσία ημερομηνίας.
Όπως το Date-fns, το Day.js δεν μπορεί να παρέχει υποστήριξη ζώνης ώρας από μόνο του. Το Day.js χρησιμοποιεί ένα σύστημα πρόσθετων, με αποτέλεσμα να προκαλεί σύγχυση στη χρήση του.
Από τα πακέτα που καλύπτονται, το Day.js είναι το πιο παρόμοιο με το Moment.js. Αυτό διευκολύνει την εναλλαγή μεταξύ των δύο, εάν χρειάζεται.
Επιλέγοντας τη σωστή βιβλιοθήκη για την εφαρμογή σας
Η επιλογή της σωστής βιβλιοθήκης ημερομηνιών και ώρας για την εφαρμογή JavaScript είναι μια σημαντική απόφαση που μπορεί να έχει μεγάλο αντίκτυπο στην ποιότητα και τη δυνατότητα συντήρησης του κώδικά σας.
Κάθε μία από τις βιβλιοθήκες που συζητούνται εδώ έχει τα δυνατά και τα αδύνατα σημεία της, επομένως είναι σημαντικό να αξιολογήσετε προσεκτικά τις απαιτήσεις σας πριν λάβετε μια απόφαση.