شكرا للمكتبة العظيمة
إحدى المشكلات التي واجهتها هي أنه من () سيتم تقريب المدد> = 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);
}
على وجه التحديد ، يمكن تشغيل هذا لتوضيح المشكلة:
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 دقيقة -> "ساعتان".
من الناحية المثالية ، أود أن يظهر ناتج السلسلة أهم وحدتين متجاورتين. بعض الأمثلة:
هل سيكون هذا السلوك مرغوبًا فيه في الوقت الحالي ، أم أنه يختلف كثيرًا عن حالات الاستخدام الهدف للمكتبة؟
هذا هو ما يسمى "تنسيق المدة" وهو موضوع معقد للغاية بحد ذاته. tl ؛ dr إنه شيء لم يتم تنفيذه في الأساس ، ولكن إليك طرقًا لتحقيق ما تريده يدويًا أو باستخدام المكونات الإضافية. يمكنك تجربة القراءة: https://github.com/moment/moment/issues/1048 أو مباشرة استخدام: https://github.com/jsmreese/moment-duration-format.
التعليق الأكثر فائدة
يمكنك بالفعل تعيين الحد الزمني الذي تريد تعيينه عليه ، كما هو موضح هنا في الوثائق .
إذا كنت تريد دائمًا عرض الوقت الكامل ، فيمكنك تعيين الحدود الخاصة بك لتكون أكثر دقة: