Moment: <moment minutes="" ago="">.from(moment()) // mengembalikan 'satu jam yang lalu'</moment>

Dibuat pada 7 Okt 2014  ·  4Komentar  ·  Sumber: moment/moment

Terima kasih untuk perpustakaan yang hebat.

Satu masalah yang saya hadapi adalah from() akan membulatkan durasi >= 45 menit hingga satu jam. Satuan lain (detik, hari, dll.) juga dibulatkan. Dalam aplikasi kami, kami ingin sedikit lebih tepat dari ini. Saya percaya bahwa fungsi yang tercantum di bawah ini melakukan pembulatan. Apa solusi yang tepat untuk menghapus pembulatan secara opsional? Terima kasih!

    function relativeTime(milliseconds, withoutSuffix, lang) {
        var seconds = round(Math.abs(milliseconds) / 1000),
            minutes = round(seconds / 60),
            hours = round(minutes / 60),
            days = round(hours / 24),
            years = round(days / 365),
            args = seconds < 45 && ['s', seconds] ||
                minutes === 1 && ['m'] ||
                minutes < 45 && ['mm', minutes] ||
                hours === 1 && ['h'] ||
                hours < 22 && ['hh', hours] ||
                days === 1 && ['d'] ||
                days <= 25 && ['dd', days] ||
                days <= 45 && ['M'] ||
                days < 345 && ['MM', round(days / 30)] ||
                years === 1 && ['y'] || ['yy', years];
        args[2] = withoutSuffix;
        args[3] = milliseconds > 0;
        args[4] = lang;
        return substituteTimeAgo.apply({}, args);
    }

Komentar yang paling membantu

Anda sebenarnya dapat mengatur ambang waktu yang Anda inginkan, seperti yang terlihat di sini di dokumentasi .

Jika Anda selalu ingin menampilkan waktu penuh, Anda dapat mengatur ambang Anda menjadi lebih tepat:

// Set thresholds to be at their "max" value
moment.relativeTimeThreshold('s', 59);
moment.relativeTimeThreshold('m', 59);
moment.relativeTimeThreshold('h', 23);
moment.relativeTimeThreshold('d', 28);
moment.relativeTimeThreshold('M', 12);

Semua 4 komentar

Secara khusus, ini dapat dijalankan untuk menggambarkan masalah:

moment().subtract(45, 'minutes').from(moment())

Anda sebenarnya dapat mengatur ambang waktu yang Anda inginkan, seperti yang terlihat di sini di dokumentasi .

Jika Anda selalu ingin menampilkan waktu penuh, Anda dapat mengatur ambang Anda menjadi lebih tepat:

// Set thresholds to be at their "max" value
moment.relativeTimeThreshold('s', 59);
moment.relativeTimeThreshold('m', 59);
moment.relativeTimeThreshold('h', 23);
moment.relativeTimeThreshold('d', 28);
moment.relativeTimeThreshold('M', 12);

Terima kasih banyak. Apakah ada cara bagi saya untuk menampilkan durasi 75 menit sebagai 'satu jam dan 15 menit', daripada 'satu jam'? Pertanyaan yang sama selama 90 menit -> '2 jam'.

Idealnya saya ingin output string menunjukkan dua unit bersebelahan yang paling signifikan. Beberapa contoh:

  • 1 jam, 56 menit, 7 detik -> 'satu jam 56 menit'
  • 4 jam, 56 detik -> 'empat jam'
  • 2 hari, 56 menit -> 'dua hari'
  • 2 hari, 1 jam, 1 menit -> 'dua hari dan satu jam'

Apakah perilaku ini diinginkan untuk moment.js, atau apakah itu terlalu menyimpang dari kasus penggunaan target perpustakaan?

Inilah yang disebut "format durasi" yang merupakan topik yang sangat, sangat rumit. tl;dr itu sesuatu yang tidak diimplementasikan di inti, tetapi berikut adalah cara untuk mencapai apa yang Anda inginkan secara manual atau dengan plugin. Anda dapat mencoba membaca: https://github.com/moment/moment/issues/1048 atau langsung menggunakan: https://github.com/jsmreese/moment-duration-format.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat