Heim > Web-Frontend > js-Tutorial > Hauptteil

Arbeiten mit Datum in Javascript: new Date() vs. Day.js vs. Moment.js

WBOY
Freigeben: 2024-07-23 12:24:04
Original
668 Leute haben es durchsucht

Working with Date in Javascript: new Date() vs Day.js vs Moment.js

Schauen Sie sich den Originalbeitrag https://devaradise.com/date-in-javascript-dayjs-momentjs/ an, um ihn mit dem Inhaltsverzeichnis zu lesen

Der Umgang mit Datums- und Uhrzeitangaben ist eine häufige Aufgabe in der JavaScript-Entwicklung. Während das native Date-Objekt von JavaScript eine Vielzahl von Methoden zum Arbeiten mit Datumsangaben bietet, gibt es Szenarien, in denen die Verwendung externer Bibliotheken wie Day.js oder Moment.js Ihren Arbeitsablauf vereinfachen und robustere Lösungen bieten kann.

In diesem Artikel untersuchen wir häufige Fälle, die durch das native Date-Objekt von JavaScript gelöst werden können, und solche, die am besten von externen Bibliotheken gehandhabt werden. Wir vergleichen auch Day.js und Moment.js, um Ihnen bei der Auswahl des richtigen Tools für Ihre Anforderungen zu helfen.

Häufige Fälle, die nach nativem JS-Datum lösbar sind

Das native JavaScript-Datumsobjekt bietet eine Reihe von Methoden zum Arbeiten mit Datums- und Uhrzeitangaben. Hier sind einige häufige Anwendungsfälle, in denen das native Date-Objekt ausreicht:

1. Termine erstellen

const now = new Date(); // Current date and time
const specificDate = new Date('2024-07-16'); // Specific date
Nach dem Login kopieren

2. Datums- und Uhrzeitkomponenten abrufen

const now = new Date();
const year = now.getFullYear();
const month = now.getMonth() + 1; // Months are zero-indexed
const day = now.getDate();

const hours = now.getHours();
const minutes = now.getMinutes();
const seconds = now.getSeconds();
Nach dem Login kopieren

3. Einstellen von Datums- und Uhrzeitkomponenten

const now = new Date();

now.setFullYear(2025);
now.setMonth(11); // December
now.setDate(25);

now.setHours(10);
now.setMinutes(11);
now.setSeconds(12);
Nach dem Login kopieren

4. Datumsarithmetik

const tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
Nach dem Login kopieren

5. Formatieren von Daten

const now = new Date();
const dateString = now.toDateString(); // Example: 'Tue Jul 16 2024'
const timeString = now.toTimeString(); // Example: '14:12:34 GMT+0200 (Central European Summer Time)'
Nach dem Login kopieren

6. Parsing-Daten

const parsedDate = new Date(Date.parse('2024-07-16T14:12:34Z'));
Nach dem Login kopieren

7. Daten vergleichen

const date1 = new Date('2024-07-16');
const date2 = new Date('2024-07-17');
const isSame = date1.getTime() === date2.getTime(); // false
const isBefore = date1.getTime() < date2.getTime(); // true
Nach dem Login kopieren

8. Den Wochentag ermitteln

const dayOfWeek = now.getDay(); // 0 for Sunday, 1 for Monday, etc.
Nach dem Login kopieren

9. Konvertieren in UTC- und ISO-String

const now = new Date();
const isoDate = now.toISOString(); // 2024-07-22T11:30:59.827Z
const utcDate = now.toUTCString(); // Mon, 22 Jul 2024 11:30:42 GMT
Nach dem Login kopieren

Berechnen von Datumsdifferenzen

const date1 = new Date('2024-01-01');
const date2 = new Date('2024-12-31');
const differenceInTime = date2 - date1;
const differenceInDays = differenceInTime / (1000 * 3600 * 24);
console.log(differenceInDays);
Nach dem Login kopieren

Fälle, die am besten von externen Bibliotheken wie Day.js und Moment.js gelöst werden

Während das native Date-Objekt die grundlegende Datumsmanipulation abdeckt, werden bestimmte Aufgaben effizienter von externen Bibliotheken wie Day.js und Moment.js erledigt. Hier sind einige Szenarien, in denen diese Bibliotheken hervorragende Leistungen erbringen:

1. Erweiterte Formatierung

// Day.js
const Day.jsDate = Day.js().format('YYYY-MM-DD HH:mm:ss');

// Moment.js
const momentDate = moment().format('YYYY-MM-DD HH:mm:ss');
Nach dem Login kopieren

2. Relative Zeit

// Day.js
Day.js.extend(relativeTime); // require RelativeTime plugin
Day.js('2024-01-01').from(Day.js('2023-01-01')); // a year ago

// Moment.js
moment('2024-01-01').from(moment('2023-01-01')); // a year ago
Nach dem Login kopieren

3. Umgang mit Zeitzonen

Day.js.extend(utc);
Day.js.extend(timezone);
Day.js('2024-07-16 14:12:34').tz('America/New_York');

// Moment.js with moment-timezone
moment.tz('2024-07-16 14:12:34', 'America/New_York');
Nach dem Login kopieren

4. Internationalisierung (i18n)

// Day.js
Day.js.locale('fr');
const frenchDate = Day.js().format('LLLL'); // dimanche 15 juillet 2012 11:01

// Moment.js
moment.locale('fr');
const frenchMomentDate = moment().format('LLLL'); // dimanche 15 juillet 2012 11:01
Nach dem Login kopieren

5. Umgang mit ungültigen Daten

// Day.js
const invalidDay.js = Day.js('invalid date');
if (!invalidDay.js.isValid()) {
    console.log('Invalid date');
}

// Moment.js
const invalidMoment = moment('invalid date');
if (!invalidMoment.isValid()) {
    console.log('Invalid date');
}
Nach dem Login kopieren

6. Komplexe Datumsformate analysieren

// Day.js with customParseFormat plugin
Day.js.extend(customParseFormat);
const complexDate = Day.js('05/02/69 1:02:03 PM -05:00', 'MM/DD/YY H:mm:ss A Z');

// Moment.js
const complexMoment = moment('05/02/69 1:02:03 PM -05:00', 'MM/DD/YY H:mm:ss A Z');
Nach dem Login kopieren

7. Arbeiten mit Dauern

// Day.js
Day.js.extend(duration);
const durationDay.js = Day.js.duration(5000); // 5 seconds
console.log(durationDay.js.asMinutes()); // 0.083333...
const humanizedDurationDay.js = Day.js.duration(5000).humanize(); // 'a few seconds'

// Moment.js
const durationMoment = moment.duration(5000); // 5 seconds
console.log(durationMoment.asMinutes()); // 0.083333...
const humanizedDurationMoment = moment.duration(5000).humanize(); // 'a few seconds'
Nach dem Login kopieren

Day.js vs. Moment.js: Ein detaillierter Vergleich

Day.js und Moment.js sind zwei beliebte Bibliotheken für die Datumsmanipulation in JavaScript. Obwohl beide denselben Zweck erfüllen, weisen sie deutliche Unterschiede in Bezug auf Leistung, Funktionen und Benutzerfreundlichkeit auf. Dieser Vergleich hilft Ihnen bei der Entscheidung, welche Bibliothek für Ihr Projekt besser geeignet ist.

Day.js

Vorteile

  • Leichtgewicht: Day.js ist nur 2 KB groß und damit deutlich kleiner als Moment.js, was es ideal für leistungsempfindliche Anwendungen macht.
  • Unveränderlich: Day.js fördert die Unveränderlichkeit, was bedeutet, dass jeder Vorgang eine neue Instanz zurückgibt, wodurch Fehler im Zusammenhang mit der Datumsmanipulation reduziert werden.
  • Plugin-Architektur: Day.js verfügt über ein modulares Plugin-System, das es Ihnen ermöglicht, nur die Funktionalität einzubinden, die Sie benötigen. Dadurch bleibt Ihre Paketgröße minimal.
  • Moderne Syntax: Day.js folgt der modernen JavaScript-Syntax und erleichtert so die Integration in moderne Codebasen.
  • Kompatibilität: Day.js ist als direkter Ersatz für Moment.js mit einer ähnlichen API konzipiert.

Nachteile

  • Weniger integrierte Funktionen: Day.js verfügt im Vergleich zu Moment.js über weniger integrierte Funktionen. Für erweiterte Funktionen sind zusätzliche Plugins erforderlich.
  • Eingeschränkte Zeitzonenunterstützung: Day.js verlässt sich für umfassende Zeitzonenunterstützung auf Plugins von Drittanbietern, während Moment.js über Moment Timezone verfügt.
  • Weniger ausgereiftes Ökosystem: Als neuere Bibliothek verfügt Day.js im Vergleich zum etablierten Moment.js über weniger Integrationen und Community-Unterstützung.

Moment.js

Vorteile

  • Funktionsreich: Moment.js bietet einen umfassenden Satz an Funktionen für fast jede Datums- und Uhrzeitmanipulationsaufgabe.
  • Ausgereiftes Ökosystem: Moment.js gibt es seit 2011, was zu umfassender Community-Unterstützung, Plugins und Integrationen geführt hat.
  • Zeitzonenverwaltung: Moment.js bietet mit seinem Moment Timezone-Plugin robuste Zeitzonenunterstützung und ist somit ideal für Anwendungen, die mehrere Zeitzonen verarbeiten müssen.
  • Detaillierte Dokumentation: Moment.js verfügt über eine detaillierte und gut gepflegte Dokumentation, die es Entwicklern erleichtert, Hilfe und Beispiele zu finden.

Nachteile

  • Große Größe: Moment.js ist deutlich größer als Day.js, was sich insbesondere bei clientseitigen Anwendungen auf die Leistung auswirken kann.
  • Veränderliche Vorgänge: Moment.js-Vorgänge verändern das ursprüngliche Datumsobjekt, was zu unerwartetem Verhalten führen kann, wenn es nicht sorgfältig verwaltet wird.
  • Veraltet: Das Moment.js-Team hat die Bibliothek veraltet und empfiehlt Alternativen wie Day.js für neue Projekte.

Vergleichstabelle

Funktion Day.js Moment.js
Feature Day.js Moment.js
Size ~2KB ~70KB
Immutability Yes No
Plugin Architecture Yes Limited
Feature Set Basic (extensible via plugins) Comprehensive
Timezone Support Limited (via plugins) Extensive (Moment Timezone)
Ecosystem Growing Mature
Documentation Good Extensive
Modern Syntax Yes No
API Compatibility Similar to Moment.js N/A
Status Actively maintained Deprecated
Größe ~2 KB ~70 KB

Unveränderlichkeit

Ja Nein

Plugin-Architektur

Ja Begrenzt

Feature-Set

Basic (erweiterbar über Plugins) Umfassend
    Zeitzonenunterstützung
Begrenzt (über Plugins) Umfangreich (Moment-Zeitzone)

Ökosystem

Wächst Reif Dokumentation Gut Umfangreich Moderne Syntax
  • Ja Nein

    API-Kompatibilität

    Ähnlich wie Moment.js N/A Status Aktiv gepflegt Veraltet Abschluss

    Bei der Arbeit mit Datumsangaben in JavaScript ist es wichtig, das richtige Tool für die Aufgabe auszuwählen. Native JavaScript-Datumsobjekte reichen für grundlegende Datumsmanipulationsaufgaben aus, aber für fortgeschrittenere Vorgänge bieten Bibliotheken wie Day.js und Moment.js leistungsstarke und praktische Funktionen.

    Berücksichtigen Sie bei der Entscheidung zwischen Day.js und Moment.js die spezifischen Anforderungen Ihres Projekts.
  • Wählen Sie Day.js, wenn Sie eine leichte, moderne und unveränderliche Bibliothek mit modularen Funktionen benötigen. Es ist ideal für leistungsempfindliche Anwendungen und Projekte, die keine umfangreiche Zeitzonenverwaltung erfordern. Wählen Sie Moment.js, wenn Sie eine funktionsreiche Bibliothek mit umfassender Zeitzonenunterstützung und einem ausgereiften Ökosystem benötigen. Beachten Sie jedoch, dass Moment.js veraltet ist und es für neue Projekte empfohlen wird, Alternativen wie Day.js in Betracht zu ziehen. Letztendlich haben beide Bibliotheken ihre Stärken und eignen sich für unterschiedliche Arten von Projekten. Bewerten Sie die Anforderungen Ihres Projekts sorgfältig, um eine fundierte Entscheidung zu treffen. Versuchen Sie, diese Tools in Ihr nächstes Projekt zu integrieren und erleben Sie die einfache Handhabung von Datumsangaben in JavaScript. Viel Spaß beim Codieren!

    Das obige ist der detaillierte Inhalt vonArbeiten mit Datum in Javascript: new Date() vs. Day.js vs. Moment.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Quelle:dev.to
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage