Moment: يقوم تنسيق وظيفة رد وقت التقويم بإرجاع سلسلة شهر تالفة

تم إنشاؤها على ٢٨ مارس ٢٠١٧  ·  3تعليقات  ·  مصدر: moment/moment

كنت أحاول استخدام وقت التقويم لتنسيق التواريخ الخاصة بي عن طريق تمرير وظيفة رد الاتصال. ومع ذلك ، في حالة "else" لرد الاتصال الخاص بي ، فإن شهر التاريخ المنسق غير صحيح.

Jan إرجاع Jamn
Mar إرجاع 3amr
Feb إرجاع F0b

ربما أرتكب هذا الخطأ ولكن يبدو من الغريب أن يعود الشهر بهذه الطريقة دون وقوع أي أخطاء.

رمز التكاثر

export const dateConversion = (date) => {
  // Assuming date comes in 'YYYY-MM-DD` format
  date = moment(date, 'YYYY-MM-DD');
  return date.calendar(null, {
    sameDay: '[Today]',
    nextDay: '[Tomorrow]',
    lastDay: '[Yesterday]',
    nextWeek: 'ddd',
    lastWeek: 'MMM D',
    sameElse: function(now) {
      if (this.isSame(now, 'year')) {
        return this.format('MMM D');
      } else {
        // Month is incorrectly parsed here 
        return this.format('MMM D, YYYY');
      }
    }
  });
}

بيئة
الثلاثاء 28 مارس 2017 16:52:21 GMT-0400 (بتوقيت شرق الولايات المتحدة)
28/03/2017 ، 4:52:21 مساءً
240
Mozilla / 5.0 (Macintosh ؛ Intel Mac OS X 10_11_6) AppleWebKit / 537.36 (KHTML ، مثل Gecko) Chrome / 56.0.2924.87 Safari / 537.36
2.17.1

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

فما باللك - تم إرجاع قيمة خاطئة.

ال 3 كومينتر

فما باللك - تم إرجاع قيمة خاطئة.

dbshwang لدي نفس المشكلة. هل يمكنك وضع القرار الخاص بك من فضلك

@ avi-meslati-sp يجب أن تعيد السلسلة فقط للتنسيق - وليس التاريخ المنسق الفعلي. لذلك في حالتي:

sameElse: function(now) {
  if (this.isSame(now, 'year')) {
      return this.format('MMM D');
  } else {
      return this.format('MMM D, YYYY');
  }
}

يجب أن يكون في الواقع

sameElse: function(now) {
  if (this.isSame(now, 'year')) {
      return 'MMM D';
  } else {
      return 'MMM D, YYYY';
  }
}
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات