


Bekerja dengan Date dalam Javascript: new Date() vs Day.js vs Moment.js
Lihat siaran asal https://devaradise.com/date-in-javascript-dayjs-momentjs/ untuk dibaca dengan Jadual Kandungan
Mengendalikan tarikh dan masa ialah tugas biasa dalam pembangunan JavaScript. Walaupun objek Tarikh asli JavaScript menawarkan pelbagai kaedah untuk berfungsi dengan tarikh, terdapat senario yang menggunakan perpustakaan luaran seperti Day.js atau Moment.js boleh memudahkan aliran kerja anda dan menyediakan penyelesaian yang lebih mantap.
Dalam artikel ini, kami akan meneroka kes biasa yang boleh diselesaikan oleh objek Tarikh asli JavaScript dan yang paling baik dikendalikan oleh perpustakaan luaran. Kami juga akan membandingkan Day.js dan Moment.js untuk membantu anda memilih alat yang sesuai untuk keperluan anda.
Kes Biasa Boleh Selesaikan mengikut Tarikh JS Asli
Objek Tarikh JavaScript asli menyediakan pelbagai kaedah untuk bekerja dengan tarikh dan masa. Berikut ialah beberapa kes penggunaan biasa apabila objek Tarikh asli adalah mencukupi:
1. Mencipta Tarikh
const now = new Date(); // Current date and time const specificDate = new Date('2024-07-16'); // Specific date
2. Mendapatkan Komponen Tarikh dan Masa
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();
3. Menetapkan Komponen Tarikh dan Masa
const now = new Date(); now.setFullYear(2025); now.setMonth(11); // December now.setDate(25); now.setHours(10); now.setMinutes(11); now.setSeconds(12);
4. Aritmetik Tarikh
const tomorrow = new Date(); tomorrow.setDate(tomorrow.getDate() + 1);
5. Memformat Tarikh
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)'
6. Menghurai Tarikh
const parsedDate = new Date(Date.parse('2024-07-16T14:12:34Z'));
7. Membandingkan Tarikh
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
8. Mendapatkan Hari dalam Minggu
const dayOfWeek = now.getDay(); // 0 for Sunday, 1 for Monday, etc.
9. Menukar kepada UTC dan 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
Mengira Perbezaan Tarikh
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);
Kes Diselesaikan Terbaik oleh Perpustakaan Luaran Seperti Day.js dan Moment.js
Walaupun objek Tarikh asli merangkumi manipulasi tarikh asas, tugas tertentu dikendalikan dengan lebih cekap oleh perpustakaan luaran seperti Day.js dan Moment.js. Berikut ialah beberapa senario di mana perpustakaan ini cemerlang:
1. Pemformatan Lanjutan
// 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');
2. Masa Relatif
// 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
3. Pengendalian Zon Masa
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');
4. Pengantarabangsaan (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
5. Mengendalikan Tarikh Tidak Sah
// 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'); }
6. Menghuraikan Format Tarikh Kompleks
// 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');
7. Bekerja dengan Tempoh
// 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 vs Moment.js: Perbandingan Terperinci
Day.js dan Moment.js ialah dua perpustakaan popular untuk manipulasi tarikh dalam JavaScript. Walaupun kedua-duanya mempunyai tujuan yang sama, mereka mempunyai perbezaan yang berbeza dari segi prestasi, ciri dan kebolehgunaan. Perbandingan ini akan membantu anda memutuskan perpustakaan mana yang lebih sesuai untuk projek anda.
Day.js
Kebaikan
- Ringan: Day.js hanya bersaiz 2KB, jauh lebih kecil daripada Moment.js, yang menjadikannya sesuai untuk aplikasi sensitif prestasi.
- Kekal: Day.js menggalakkan kebolehubah, bermakna setiap operasi mengembalikan kejadian baharu, mengurangkan pepijat yang berkaitan dengan manipulasi tarikh.
- Seni Bina Plugin: Day.js mempunyai sistem pemalam modular, membolehkan anda memasukkan hanya fungsi yang anda perlukan. Ini memastikan saiz berkas anda minimum.
- Sintaks Moden: Day.js mengikuti sintaks JavaScript moden, menjadikannya lebih mudah untuk disepadukan dengan pangkalan kod moden.
- Keserasian: Day.js direka bentuk untuk menjadi pengganti drop-in untuk Moment.js, dengan API yang serupa.
Keburukan
- Kurang Ciri Terbina dalam: Day.js mempunyai lebih sedikit ciri terbina dalam berbanding Moment.js. Fungsi lanjutan memerlukan pemalam tambahan.
- Sokongan Zon Waktu Terhad: Day.js bergantung pada pemalam pihak ketiga untuk sokongan zon waktu yang komprehensif, manakala Moment.js mempunyai Zon Waktu Momen.
- Ekosistem Kurang Matang: Sebagai perpustakaan yang lebih baharu, Day.js mempunyai kurang penyepaduan dan sokongan komuniti berbanding Moment.js yang mantap.
Moment.js
Kebaikan
- Kaya Ciri: Moment.js menyediakan set ciri yang komprehensif untuk hampir mana-mana tugas manipulasi tarikh dan masa.
- Ekosistem Matang: Moment.js telah wujud sejak 2011, menghasilkan sokongan komuniti, pemalam dan penyepaduan yang meluas.
- Pengendalian Zon Waktu: Moment.js, dengan pemalam Zon Waktu Moment, menawarkan sokongan zon waktu yang teguh, menjadikannya sesuai untuk aplikasi yang perlu mengendalikan berbilang zon waktu.
- Dokumentasi Terperinci: Moment.js mempunyai dokumentasi yang terperinci dan diselenggara dengan baik, memudahkan pembangun mencari bantuan dan contoh.
Keburukan
- Saiz Besar: Moment.js jauh lebih besar daripada Day.js, yang boleh memberi kesan kepada prestasi, terutamanya dalam aplikasi sebelah pelanggan.
- Operasi Boleh Diubah: Operasi Moment.js memutasi objek tarikh asal, yang boleh membawa kepada gelagat yang tidak dijangka jika tidak diurus dengan teliti.
- Ditamatkan: Pasukan Moment.js telah menghentikan penggunaan perpustakaan, mengesyorkan alternatif seperti Day.js untuk projek baharu.
Jadual Perbandingan
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 |
Ketidakbolehubah
Seni Bina Plugin
Set Ciri
- Sokongan Zon Waktu
Ekosistem
Keserasian API
Apabila bekerja dengan tarikh dalam JavaScript, adalah penting untuk memilih alat yang sesuai untuk tugas itu. Objek Tarikh JavaScript asli mencukupi untuk tugas manipulasi tarikh asas, tetapi untuk operasi yang lebih maju, perpustakaan seperti Day.js dan Moment.js menawarkan ciri yang hebat dan mudah.
Apabila membuat keputusan antara Day.js dan Moment.js, pertimbangkan keperluan khusus projek anda.
Atas ialah kandungan terperinci Bekerja dengan Date dalam Javascript: new Date() vs Day.js vs Moment.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Penggunaan utama JavaScript dalam pembangunan web termasuk interaksi klien, pengesahan bentuk dan komunikasi tak segerak. 1) kemas kini kandungan dinamik dan interaksi pengguna melalui operasi DOM; 2) pengesahan pelanggan dijalankan sebelum pengguna mengemukakan data untuk meningkatkan pengalaman pengguna; 3) Komunikasi yang tidak bersesuaian dengan pelayan dicapai melalui teknologi Ajax.

Aplikasi JavaScript di dunia nyata termasuk pembangunan depan dan back-end. 1) Memaparkan aplikasi front-end dengan membina aplikasi senarai TODO, yang melibatkan operasi DOM dan pemprosesan acara. 2) Membina Restfulapi melalui Node.js dan menyatakan untuk menunjukkan aplikasi back-end.

Memahami bagaimana enjin JavaScript berfungsi secara dalaman adalah penting kepada pemaju kerana ia membantu menulis kod yang lebih cekap dan memahami kesesakan prestasi dan strategi pengoptimuman. 1) aliran kerja enjin termasuk tiga peringkat: parsing, penyusun dan pelaksanaan; 2) Semasa proses pelaksanaan, enjin akan melakukan pengoptimuman dinamik, seperti cache dalam talian dan kelas tersembunyi; 3) Amalan terbaik termasuk mengelakkan pembolehubah global, mengoptimumkan gelung, menggunakan const dan membiarkan, dan mengelakkan penggunaan penutupan yang berlebihan.

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Kedua -dua pilihan Python dan JavaScript dalam persekitaran pembangunan adalah penting. 1) Persekitaran pembangunan Python termasuk Pycharm, Jupyternotebook dan Anaconda, yang sesuai untuk sains data dan prototaip cepat. 2) Persekitaran pembangunan JavaScript termasuk node.js, vscode dan webpack, yang sesuai untuk pembangunan front-end dan back-end. Memilih alat yang betul mengikut keperluan projek dapat meningkatkan kecekapan pembangunan dan kadar kejayaan projek.

C dan C memainkan peranan penting dalam enjin JavaScript, terutamanya digunakan untuk melaksanakan jurubahasa dan penyusun JIT. 1) C digunakan untuk menghuraikan kod sumber JavaScript dan menghasilkan pokok sintaks abstrak. 2) C bertanggungjawab untuk menjana dan melaksanakan bytecode. 3) C melaksanakan pengkompil JIT, mengoptimumkan dan menyusun kod hot-spot semasa runtime, dan dengan ketara meningkatkan kecekapan pelaksanaan JavaScript.

JavaScript digunakan secara meluas di laman web, aplikasi mudah alih, aplikasi desktop dan pengaturcaraan sisi pelayan. 1) Dalam pembangunan laman web, JavaScript mengendalikan DOM bersama -sama dengan HTML dan CSS untuk mencapai kesan dinamik dan menyokong rangka kerja seperti JQuery dan React. 2) Melalui reaktnatif dan ionik, JavaScript digunakan untuk membangunkan aplikasi mudah alih rentas platform. 3) Rangka kerja elektron membolehkan JavaScript membina aplikasi desktop. 4) Node.js membolehkan JavaScript berjalan di sisi pelayan dan menyokong permintaan serentak yang tinggi.
