2012-04-24 12 views
9

मैं जिस पृष्ठ पर निर्माण कर रहा हूं, उस पर तारीख को प्रदर्शित करने की आवश्यकता है (उदाहरण: 15 अगस्त) या, यदि तिथि आज है, तो बस एक समय प्रदर्शित करें, उदाहरण के लिए : 10 बजे।moment.js - या तो दिनांक या समय प्रदर्शित करें

उस व्यवहार को क्षण.जेएस से बाहर करने का सबसे अच्छा तरीका क्या होगा?

प्रारूप जो मैं चाहता हूं वह प्रारूप 'डी एमएमएम' है और समय के लिए प्रारूप 'एचए' (यदि मिनट 0 हैं) या 'एच: एमएमए' (यदि मिनट 0 नहीं हैं)।

इस पर कैसे पहुंचे इस पर कोई विचार? ऐसा लगता है कि कैलेंडर() फ़ंक्शन ऐसा कुछ समर्थन करने में सक्षम हो सकता है?

उत्तर

12

आप moment.calendar उपयोग करना चाहते हैं। आप उससे बेहतर अनाज नहीं कर सकते हैं।

function timeTodayDateElse(date){ 
    moment.lang('en', { 
     'calendar' : { 
      'lastDay' : 'D MMMM', 
      'sameDay' : 'h:mmA', 
      'nextDay' : 'D MMMM', 
      'lastWeek' : 'D MMMM', 
      'nextWeek' : 'D MMMM', 
      'sameElse' : 'D MMMM' 
     } 
    }); 

    return moment(date).calendar(); 
} 
+1

धन्यवाद, यह निष्कर्ष था कि मैं भी साथ आया था! – Fatal

+1

ठीक है, वास्तव में, यदि आप एक अगर बयान उस तारीख moment.diff का उपयोग कर आज है अगर जाँच करता है कर सकता है (http://momentjs.com/docs/#/displaying/difference/ देखें) और अगर यह 'कैलेंडर का उपयोग नहीं कर रहा है ', अन्यथा अपने * एचए * प्रारूप का उपयोग करें। – Femi

+0

वे लोअरकेस डी एस अपरकेस डी होना चाहिए (अन्यथा यह महीने के बजाय सप्ताह का दिन प्रदर्शित करेगा)। –

1

एक त्वरित Google खोज (moment.js सापेक्ष समय) दस्तावेज में this link देता है। आप इसे इच्छित प्रारूप तारों के साथ अनुकूलित करने में सक्षम होना चाहिए। एमएमए: एच के घ MMMM और sameDay को sameDay के अलावा सब कुछ सेट:

+0

धन्यवाद, सापेक्ष समय करीब था लेकिन कैलेंडर फ़ंक्शन मेरे लिए अधिक उपयुक्त था। – Fatal

8

आप इसे स्वयं करने के लिए एक माइक्रो प्लगइन लिख सकते हैं।

moment.fn.formatTimeToday = function() { 
    var now = moment(), 
     format = "d MMM"; 
    if (this.date() === now.date() && 
     Math.abs(this.diff(now)) < 86400000) { 
     // same day of month and less than 24 hours difference 
     if (this.minutes() === 0) { 
      format = "hA"; 
     } else { 
      format = "h:mmA"; 
     } 
    } 
    return this.format(format); 
} 
+0

धन्यवाद! इसके अलावा, पल के लिए धन्यवाद, यह कमाल है: डी – captainpete

संबंधित मुद्दे