Maison > Article > interface Web > Travailler avec Date en Javascript : new Date() vs Day.js vs Moment.js
Consultez le message original https://devaradise.com/date-in-javascript-dayjs-momentjs/ pour le lire avec la table des matières
La gestion des dates et des heures est une tâche courante dans le développement JavaScript. Bien que l'objet Date natif de JavaScript offre une variété de méthodes pour travailler avec les dates, il existe des scénarios dans lesquels l'utilisation de bibliothèques externes telles que Day.js ou Moment.js peut simplifier votre flux de travail et fournir des solutions plus robustes.
Dans cet article, nous explorerons les cas courants qui peuvent être résolus par l'objet Date natif de JavaScript et ceux qui sont mieux gérés par des bibliothèques externes. Nous comparerons également Day.js et Moment.js pour vous aider à choisir l'outil adapté à vos besoins.
L'objet JavaScript Date natif fournit une gamme de méthodes pour travailler avec les dates et les heures. Voici quelques cas d'utilisation courants où l'objet Date natif est suffisant :
const now = new Date(); // Current date and time const specificDate = new Date('2024-07-16'); // Specific date
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();
const now = new Date(); now.setFullYear(2025); now.setMonth(11); // December now.setDate(25); now.setHours(10); now.setMinutes(11); now.setSeconds(12);
const tomorrow = new Date(); tomorrow.setDate(tomorrow.getDate() + 1);
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)'
const parsedDate = new Date(Date.parse('2024-07-16T14:12:34Z'));
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
const dayOfWeek = now.getDay(); // 0 for Sunday, 1 for Monday, etc.
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
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);
Bien que l'objet Date natif couvre la manipulation de base de la date, certaines tâches sont gérées plus efficacement par des bibliothèques externes comme Day.js et Moment.js. Voici quelques scénarios dans lesquels ces bibliothèques excellent :
// 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');
// 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
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');
// 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
// 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'); }
// 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');
// 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'
Day.js et Moment.js sont deux bibliothèques populaires pour la manipulation de dates en JavaScript. Bien que les deux servent le même objectif, ils présentent des différences distinctes en termes de performances, de fonctionnalités et de convivialité. Cette comparaison vous aidera à décider quelle bibliothèque est la mieux adaptée à votre projet.
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 |
Architecture des plugins
Ensemble de fonctionnalités
Écosystème
Compatibilité API
Lorsque vous travaillez avec des dates en JavaScript, il est essentiel de choisir le bon outil pour la tâche. Les objets Date JavaScript natifs sont suffisants pour les tâches de manipulation de date de base, mais pour des opérations plus avancées, des bibliothèques comme Day.js et Moment.js offrent des fonctionnalités puissantes et pratiques.
Lorsque vous décidez entre Day.js et Moment.js, tenez compte des besoins spécifiques de votre projet.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!