Moment: <moment minutes="" ago="">.from (moment ()) // تعود "قبل ساعة"</moment>

تم إنشاؤها على ٧ أكتوبر ٢٠١٤  ·  4تعليقات  ·  مصدر: moment/moment

شكرا للمكتبة العظيمة

إحدى المشكلات التي واجهتها هي أنه من () سيتم تقريب المدد> = 45 دقيقة إلى ساعة. يتم أيضًا تقريب الوحدات الأخرى (الثواني والأيام وما إلى ذلك). في تطبيقنا نود أن نكون أكثر دقة قليلاً من هذا. أعتقد أن الوظيفة المذكورة أدناه تقوم بالتقريب. ما الحل المناسب لإزالة التقريب اختياريًا؟ شكرا!

    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);
    }

التعليق الأكثر فائدة

يمكنك بالفعل تعيين الحد الزمني الذي تريد تعيينه عليه ، كما هو موضح هنا في الوثائق .

إذا كنت تريد دائمًا عرض الوقت الكامل ، فيمكنك تعيين الحدود الخاصة بك لتكون أكثر دقة:

// 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);

ال 4 كومينتر

على وجه التحديد ، يمكن تشغيل هذا لتوضيح المشكلة:

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

يمكنك بالفعل تعيين الحد الزمني الذي تريد تعيينه عليه ، كما هو موضح هنا في الوثائق .

إذا كنت تريد دائمًا عرض الوقت الكامل ، فيمكنك تعيين الحدود الخاصة بك لتكون أكثر دقة:

// 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);

عظيم شكرا. هل هناك أي طريقة يمكنني من خلالها عرض مدة 75 دقيقة كـ "ساعة و 15 دقيقة" ، بدلاً من "ساعة"؟ نفس السؤال لمدة 90 دقيقة -> "ساعتان".

من الناحية المثالية ، أود أن يظهر ناتج السلسلة أهم وحدتين متجاورتين. بعض الأمثلة:

  • ساعة و 56 دقيقة و 7 ثوانٍ -> "ساعة و 56 دقيقة"
  • 4 ساعات و 56 ثانية -> "أربع ساعات"
  • يومان ، 56 دقيقة -> "يومين"
  • يومان ، ساعة واحدة ، دقيقة واحدة -> "يومان وساعة واحدة"

هل سيكون هذا السلوك مرغوبًا فيه في الوقت الحالي ، أم أنه يختلف كثيرًا عن حالات الاستخدام الهدف للمكتبة؟

هذا هو ما يسمى "تنسيق المدة" وهو موضوع معقد للغاية بحد ذاته. tl ؛ dr إنه شيء لم يتم تنفيذه في الأساس ، ولكن إليك طرقًا لتحقيق ما تريده يدويًا أو باستخدام المكونات الإضافية. يمكنك تجربة القراءة: https://github.com/moment/moment/issues/1048 أو مباشرة استخدام: https://github.com/jsmreese/moment-duration-format.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات