Saya ingin menampilkan beberapa tanggal sebagai relatif terhadap tanggal saat ini dalam format yang ramah manusia.
Contoh tanggal relatif ramah manusia:
- 10 detik yang lalu
- 20 menit dari sekarang
- 1 hari yang lalu
- 5 minggu lalu
- 2 bulan yang lalu
Pada dasarnya dengan setia mempertahankan urutan besaran tertinggi (dan berdasarkan preferensi, hanya menggeser unit saat melewati 2 unit tersebut - 5 minggu, bukan 1 bulan).
Meskipun saya bisa hidup dengan perpustakaan yang kurang memiliki kendali dan bahkan tanggal yang lebih bersahabat seperti:
- kemarin
- besok
- minggu lalu
- beberapa menit yang lalu
- dalam beberapa jam
Ada perpustakaan populer untuk ini?
javascript
date
formatting
rampion
sumber
sumber
Jawaban:
Sejak saya menulis jawaban ini, perpustakaan terkenal yang tersedia adalah moment.js .
Ada perpustakaan yang tersedia , tetapi itu mudah untuk diterapkan sendiri. Gunakan saja beberapa kondisi.
Asumsikan
date
adalahDate
objek yang dibuat untuk waktu yang ingin Anda bandingkan.Anda perlu menyesuaikan ini untuk menangani tanggal-tanggal yang akan datang.
sumber
getTimeAgo
fungsi gaya twitter gist.github.com/pomber/6195066a9258d1fb93bb59c206345b38Saya menulis moment.js , perpustakaan tanggal yang melakukan ini. Ini tentang
5KB (2011)52KB (2019), dan bekerja di browser dan di Node. Ini juga mungkin perpustakaan tanggal paling populer dan terkenal untuk JavaScript.Ini mendukung timeago, pemformatan, parsing, kueri, manipulasi, i18n, dll.
Timeago (waktu relatif) untuk tanggal di masa lalu dilakukan dengan
moment().fromNow()
. Misalnya untuk menampilkan 1 Januari 2019 dalam format timeago:String timeago dapat disesuaikan dengan
moment.updateLocale()
, sehingga Anda dapat mengubahnya sesuai keinginan Anda.Batasnya bukanlah apa yang diminta pertanyaan ("5 minggu" vs. "1 bulan"), tetapi ini didokumentasikan sebagai string mana yang digunakan untuk rentang waktu apa.
sumber
Ini sesuatu dari John Resig - http://ejohn.org/blog/javascript-pretty-date/
EDIT (6/27/2014): Menindaklanjuti komentar dari Sumurai8 - meskipun halaman tertaut masih berfungsi, berikut adalah kutipan untuk
pretty.js
ditautkan dari artikel di atas:pretty.js
Pemakaian:
Kutipan dari artikel tentang penggunaan:
Dengan JavaScript:
Dengan jQuery:
Faiz: Membuat beberapa perubahan pada kode asli, perbaikan bug, dan peningkatan.
sumber
sugar.js memiliki fungsi format tanggal yang bagus.
Tidak hanya itu, ia juga menyediakan fungsi tujuan umum umum seperti pemformatan string, pemformatan angka, dll. Yang nyaman digunakan.
sumber
di sini contoh gula vs momen: untuk kalender yang menampilkan minggu, saya membutuhkan nilai senin terakhir:
moment.js
sugar.js
Saya lebih suka gula dan setelah beberapa bulan dengan moment.js sekarang beralih ke sugar.js. itu lebih jelas dan terintegrasi dengan baik dengan kelas Tanggal Javascripts.
Kasus OP dicakup oleh kedua libs, untuk sugar.js lihat http://sugarjs.com/dates
sumber
Skrip js ini sangat bagus. Yang harus Anda lakukan adalah menjalankannya. Semua
<time>
tag akan diubah ke tanggal relatif dan diperbarui setiap beberapa menit, sehingga waktu relatif akan selalu diperbarui.http://timeago.yarp.com/
sumber
Sepertinya Anda bisa menggunakan http://www.datejs.com/
Mereka memiliki contoh di halaman utama yang melakukan persis seperti yang Anda gambarkan!
EDIT: Sebenarnya, saya pikir saya membalikkan pertanyaan Anda di kepala saya. Bagaimanapun, saya pikir Anda bisa memeriksanya karena ini adalah perpustakaan yang sangat bagus!
EDIT x2: Saya akan mengulangi apa yang dikatakan orang lain. Http://momentjs.com/ mungkin adalah pilihan terbaik yang tersedia saat ini.
EDIT x3: Saya belum pernah menggunakan date.js selama lebih dari setahun. Saya secara eksklusif menggunakan momentjs untuk semua kebutuhan terkait tanggal saya.
sumber