यूनिक्स टाइमस्टैम्प को कैलेंडर तिथि क्षण में कैसे परिवर्तित करें। js


141

मेरे पास एक यूनिक्स टाइमस्टैम्प है, और मैं इसे कैलेंडर की तारीख में बदलने की कोशिश कर रहा हूं जैसे कि MM/DD/YYYY। अब तक, मेरे पास यह है:

$(document).ready(function() {
  var value = $("#unixtime").val(); //this retrieves the unix timestamp
  var dateString = moment(value).calendar(); 
  alert(dateString);
});

जब मैं कैलेंडर तिथि का प्रिंट आउट लेने का प्रयास करता हूं, तो विंडो "अमान्य दिनांक" कहती है। क्या कोई मेरी मदद कर सकता है?

जवाबों:


364

आपके द्वारा पूछे गए क्षणों का उपयोग करते हुए, एक unixविधि है जो कुछ सेकंड में यूनिक्स टाइमस्टैम्प स्वीकार करती है:

var dateString = moment.unix(value).format("MM/DD/YYYY");

3
वह कैलेंडर की तारीख नहीं है।
इयान वारबर्टन

1
@IanWarburton - यह नहीं है ??
मैट जॉनसन-पिंट

मुझे लगता है कि यह सवाल के अनुसार है। लेकिन मुझे लगता है कि क्षण में एक कैलेंडर तिथि है। जेएस इस तरह दिखता है .... पल (नई तारीख (आइटमटेट))। कैलेंडर ()
इयान

5
@IanWarburton - आपको वहां नई तिथि ऑब्जेक्ट की आवश्यकता नहीं होगी। calendarसमारोह अच्छा (है डॉक्स यहाँ ), लेकिन प्रारूप कि ओ पी के लिए कहा नहीं।
मैट जॉनसन-पिंट

1
यह ध्यान देने योग्य है कि प्रश्न विफल क्यों होता है लेकिन यह काम करता है। इसका कारण यह है कि मिली सेकंड monent(number) में एक यूनिक्स टाइमस्टैम्प (जो Dateवस्तु के अनुरूप है ) की अपेक्षा करता है , जबकि यूनिक्स टाइमस्टैम्प डिफ़ॉल्ट रूप से सेकंड में होता है। तो आप moment(value*1000)इसके बजाय भी कर सकते हैं moment.unix(value), लेकिन उपयोग unixकरना स्पष्ट है।
ic9797

39

UNIX टाइमस्टैम्प यह 1970 से कुछ सेकंड की गिनती है, इसलिए आपको इसे JS Date ऑब्जेक्ट में बदलने की आवश्यकता है:

var date = new Date(unixTimestamp*1000);

हाँ, यही हाल के संस्करण के साथ समाधान था, या कम से कम जो मैंने हाल ही में एनपीएम से प्राप्त किया था। भले ही मैं .unix () पल से मैं * 1000 था जब इसे फिर से तत्काल। उदाहरण के लिए: पल (पल) ()। यूनिक्स () * 1000)
kroe

सर्वश्रेष्ठ उत्तर moment.js तर्क की तुलना
एंड्रिस


4
new moment(timeStamp,'yyyyMMddHHmmssfff').toDate()

9
हालांकि यह कोड प्रश्न का उत्तर दे सकता है, लेकिन कुछ संदर्भों को शामिल करना बेहतर होगा, यह बताएंगे कि यह कैसे काम करता है, और इसका उपयोग करने के लिए वर्णन करें। कोड-केवल उत्तर लंबे समय में उपयोगी नहीं हैं। इसके अतिरिक्त, आपका कोड ठीक से स्वरूपित नहीं है।
ryanyuyu


3

थोड़ी देर हो सकती है लेकिन इस तरह के नए मुद्दों के लिए मैं इस कोड का उपयोग करता हूं:

moment(timestamp, 'X').format('lll');

आप अपनी आवश्यकताओं से मेल खाने के लिए प्रारूप बदल सकते हैं और इस तरह टाइमजोन भी जोड़ सकते हैं:

moment(timestamp, 'X').tz(timezone).format('lll');

1
यह सबसे अच्छी विधि है जिसे मैंने यहां देखा है।
ल्यूकवेंटर

1
बस इस उत्तर को जोड़ने के लिए (जो यहाँ पर सबसे सही उत्तर है)। xएमएस यूनिक्स टाइमस्टैम्प के लिए लोअरकेस का उपयोग करें । यहाँ प्रलेखन
जॉनट्रॉनकोसो


0
$(document).ready(function() {
    var value = $("#unixtime").val(); //this retrieves the unix timestamp
    var dateString = moment(value, 'MM/DD/YYYY', false).calendar(); 
    alert(dateString);
});

एक सख्त मोड और फोर्जिंग मोड है

जबकि सख्त मोड ज्यादातर स्थितियों में बेहतर काम करता है, माफ़ करने का तरीका बहुत उपयोगी हो सकता है जब स्ट्रिंग के प्रारूप को पल में अलग-अलग किया जा सकता है।

बाद के रिलीज़ में, पार्सर सख्त मोड का उपयोग करने के लिए डिफ़ॉल्ट होगा। स्ट्रिक्ट मोड में विभाजकों सहित निर्दिष्ट प्रारूप से सटीक रूप से मेल खाने के लिए इनपुट की आवश्यकता होती है। स्ट्रिक्ट मोड को तीसरे पैरामीटर के रूप में क्षण फ़ंक्शन के लिए सही मानकर सेट किया गया है।

एक सामान्य परिदृश्य जहां क्षमा करने का तरीका उपयोगी है, उन स्थितियों में है जहां एक तृतीय पक्ष एपीआई तारीख प्रदान कर रहा है, और उस एपीआई के लिए तिथि प्रारूप बदल सकता है। मान लीजिए कि एक API 'YYYY-MM-DD' प्रारूप में दिनांक भेजकर शुरू होता है, और फिर बाद में 'MM / DD / YYYY' प्रारूप में बदल जाता है।

सख्त मोड में, 'अमान्य दिनांक' में निम्नलिखित कोड परिणाम प्रदर्शित किए जा रहे हैं:

moment('01/12/2016', 'YYYY-MM-DD', true).format()
"Invalid date"

प्रारूप स्ट्रिंग का उपयोग करके क्षमा करने की विधि में, आपको एक गलत तारीख मिलती है:

moment('01/12/2016', 'YYYY-MM-DD').format()
"2001-12-20T00:00:00-06:00"

एक और तरीका होगा

$(document).ready(function() {
    var value = $("#unixtime").val(); //this retrieves the unix timestamp
    var dateString = moment.unix(value).calendar(); 
    alert(dateString);
});


0

यह समारोह टाइमस्टैम्प से तारीख बनाता है:

    function formatDateTime(dateString) {
        const parsed = moment(new Date(dateString))

        if (!parsed.isValid()) {
            return dateString
        }

        return parsed.format('MMM D, YYYY, HH:mmA')
    }


0
moment(timestamp).format('''any format''')

3
हालांकि यह कोड ओपी के मुद्दे को हल कर सकता है, लेकिन स्पष्टीकरण को शामिल करना सबसे अच्छा है कि आपका कोड ओपी के मुद्दे को कैसे संबोधित करता है। इस तरह, भविष्य के आगंतुक आपके पोस्ट से सीख सकते हैं, और इसे अपने स्वयं के कोड पर लागू कर सकते हैं। SO एक कोडिंग सेवा नहीं है, बल्कि ज्ञान के लिए एक संसाधन है। इसके अलावा, उच्च गुणवत्ता, पूर्ण उत्तरों के अपग्रेड होने की अधिक संभावना है। ये विशेषताएं, इस आवश्यकता के साथ कि सभी पद स्व-सम्‍मिलित हैं, एसओ की कुछ ताकतें एक मंच के रूप में हैं, जो इसे मंचों से अलग करती हैं। आप अतिरिक्त जानकारी जोड़ने और / या स्रोत प्रलेखन के साथ अपने स्पष्टीकरण के पूरक के लिए संपादित कर सकते हैं।
ysf
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.