Apakah ada cara saya bisa menggunakan metode moment.js format
pada objek durasi? Saya tidak dapat menemukannya di mana pun di dokumen dan tidak terlihat sebagai atribut pada objek durasi.
Saya ingin dapat melakukan sesuatu seperti:
var diff = moment(end).unix() - moment(start).unix();
moment.duration(diff).format('hh:mm:ss')
Juga, jika ada perpustakaan lain yang dapat dengan mudah mengakomodasi fungsi semacam ini, saya akan tertarik pada rekomendasi.
Terima kasih!
javascript
momentjs
mvanveen
sumber
sumber
HH:mm:ss
akan memberikan00:00:23
contoh saya sebelumnya. jadi hanya casing yang salah pada bagian JamJawaban:
Kami ingin menambahkan semacam pemformatan ke durasi di moment.js. Lihat https://github.com/timrwood/moment/issues/463
Beberapa perpustakaan lain yang mungkin membantu adalah http://countdownjs.org/ dan https://github.com/icambron/twix.js
sumber
Lihatlah JSFiddle
sumber
DDD HH:mm:ss.SSS
(di manaDDD
hari tahun) muncul1
ketika saya ingin0
. Adakah perbaikan cepat untuk itu?konversi durasi ke ms dan kemudian ke momen:
sumber
.format('HH:mm:ss')
. Lihat dokumenGunakan plugin ini Format Durasi Momen .
Contoh:
sumber
hh:mm:mm
dan hanya memiliki 10 detik itu menunjukkan10
bukan00:00:10
(bahkan dengan forcelength on) Jika tidak memformat ... maka harus disebut sesuatu yang lain, format harus terstandarisasi.{ trim: false }
itu akan menghentikan perilaku itu.const duration = moment.duration(value, 'seconds');
daripada saya dapat diformat menggunakan:moment.utc(duration.as('milliseconds')).format('HH:mm:ss').toString();
Gunakan baris kode ini:
sumber
sumber
Skenario terbaik untuk kasus penggunaan khusus saya adalah:
Ini meningkatkan jawaban @ Wilson karena tidak mengakses data internal properti pribadi.
sumber
Anda tidak perlu .format. Gunakan durasi seperti ini:
Saya menemukan solusi ini di sini: https://github.com/moment/moment/issues/463
EDIT:
Dan dengan bantalan untuk detik, menit, dan jam:
sumber
duration = moment.duration(7200, 'seconds'); withPadding(duration);
akan mengatakan "00:00".if (duration.asDays() > 0) { return 'at least one day';
- Apakah saya membacanya dengan benar?Saya menggunakan:
Dan saya mendapatkan "09:30" di var str.
sumber
_data
adalah properti internal dan dapat berubah tanpa peringatan.moment(moment.duration(1200000)._data).format('hh:mm:ss')
akan mengembalikan 12:20 bukannya 00:20h
berada di kisaran 1-12, jadi agak bisa diharapkan. GunakanH
sebaliknya docs - token jammoment.utc(...).format("HH:mm");
jika diff adalah sesaat
sumber
Jika Anda ingin menggunakan pustaka javascript yang berbeda, numeral.js dapat memformat detik sebagai berikut (contohnya untuk 1000 detik):
sumber
Saya menggunakan fungsi format klasik dalam kasus ini:
Ini adalah retasan karena perbedaan waktu diperlakukan sebagai tanggal momen standar, waktu tanggal zaman awal, tetapi itu tidak masalah bagi tujuan kami dan Anda tidak memerlukan plugin apa pun
sumber
Jika semua jam harus ditampilkan (lebih dari 24) dan jika '0' sebelum jam tidak diperlukan, maka pemformatan dapat dilakukan dengan baris kode pendek:
sumber
Berdasarkan jawaban ni-ko-o-kin :
sumber
Untuk memformat durasi momen ke string
sumber
jika Anda menggunakan sudut menambahkan ini ke filter Anda:
contoh penggunaan
sumber
Solusi saya yang tidak melibatkan perpustakaan lain dan ia bekerja dengan diff> 24jam
sumber
Bagaimana dengan javascript asli?
sumber
Gunakan format waktu-durasi .
Kerangka Klien (mis: Bereaksi)
Server (node.js)
sumber
Cetakan:
sumber
sumber
Anda dapat menggunakan numeral.js untuk memformat durasi Anda:
sumber
Ini dapat digunakan untuk mendapatkan dua karakter pertama sebagai jam dan dua terakhir sebagai menit. Logika yang sama dapat diterapkan ke detik.
sumber
moment.duration(x).format()
telah ditinggalkan. Anda dapat menggunakanmoment.utc(4366589).format("HH:mm:ss")
untuk mendapatkan respons yang diinginkan.sumber
Bagaimana cara menggunakan durasi moment.js dengan benar? | Gunakan moment.duration () dalam kode
Pertama, Anda perlu mengimpor
moment
danmoment-duration-format
.Kemudian, gunakan fungsi durasi. Mari kita terapkan contoh di atas: 28800 = 8 pagi.
🎉Nah, Anda tidak memiliki kesalahan tipe di atas. 🤔Apakah Anda mendapatkan nilai yang tepat 8:00 pagi? Tidak…, nilai yang Anda dapatkan adalah 8:00 a. Format Moment.js tidak berfungsi sebagaimana mestinya.
Solution Solusinya adalah mengubah detik menjadi milidetik dan menggunakan waktu UTC.
Baiklah kita dapatkan jam 8:00 pagi sekarang. Jika Anda ingin 8:00 bukan 8:00 untuk waktu yang tidak terpisahkan, kita perlu melakukan RegExp
sumber
Saya perlu melakukan ini untuk bekerja sebagai persyaratan untuk menampilkan jam dalam format ini. Awalnya saya mencoba ini.
Namun apa pun lebih dari 24 jam dan jam diatur ulang ke 0. Tetapi menit dan detik akurat. Jadi saya hanya menggunakan bagian itu untuk menit dan detik.
Sekarang yang saya butuhkan adalah total jam.
Dan untuk mendapatkan format yang kita semua inginkan, kita rekatkan saja.
jika
totalMilliseconds
ini894600000
ini akan kembali249:30:00
.Harapan itu membantu. Tinggalkan pertanyaan di komentar. ;)
sumber
Jika Anda menggunakan Angular> 2, saya membuat Pipa yang terinspirasi oleh jawaban @ hai-alaluf.
sumber
Ini bekerja untuk saya:
sumber