2011-04-01 27 views
24

इस '01 -01-1970 00:03:44 'जैसे स्ट्रिंग को जावास्क्रिप्ट डेटाटाइम में कैसे परिवर्तित करें?स्ट्रिंग को डेटाटाइम में कनवर्ट करें

+0

http के संभावित डुप्लिकेट: //stackoverflow.com/questions/476105/how-can-i-convert-string-to-datetime-with-format- स्पेसिफिकेशन-in-javascript –

+0

आपका प्रश्न इस का एक डुप्लिकेट प्रतीत होता है: http://stackoverflow.com/q/476105/684934 – bdares

+0

कृपया इसे जांचें; http://stackoverflow.com/a/25961926/1766100 यह मेरे लिए काम किया। –

उत्तर

11

देखने के इस प्रारूप के लिए (यह मानते हुए DatePart प्रारूप डीडी-है mm-yyyy) सादे जावास्क्रिप्ट में dateString2Date का उपयोग करें।

[संपादित] इनपुट स्ट्रिंग में दिनांक/माह/वर्ष की स्थिति के बारे में सूचित करने के लिए विधि एक प्रारूप स्ट्रिंग पैरामीटर (format) का उपयोग कर एक तारीख स्ट्रिंग पार्स करने में एक ES6 उपयोगिता विधि जोड़ा गया।

var result = document.querySelector('#result'); 
 

 
result.textContent = 
 
    `*Fixed\ndateString2Date('01-01-2016 00:03:44'):\n => ${ 
 
    dateString2Date('01-01-2016 00:03:44')}`; 
 

 
result.textContent += 
 
    `\n\n*With formatting\ntryParseDateFromString('01-01-2016 00:03:44', 'dmy'):\n => ${ 
 
    tryParseDateFromString('01-01-2016 00:03:44', "dmy").toUTCString()}`; 
 

 
result.textContent += 
 
    `\n\nWith formatting\ntryParseDateFromString('03/01/2016', 'mdy'):\n => ${ 
 
    tryParseDateFromString('03/01/1943', "mdy").toUTCString()}`; 
 

 
// fixed format dd-mm-yyyy 
 
function dateString2Date(dateString) { 
 
    var dt = dateString.split(/\-|\s/); 
 
    return new Date(dt.slice(0,3).reverse().join('-') + ' ' + dt[3]); 
 
} 
 

 
// multiple formats (e.g. yyyy/mm/dd or mm-dd-yyyy etc.) 
 
function tryParseDateFromString(dateStringCandidateValue, format = "ymd") { 
 
    if (!dateStringCandidateValue) { return null; } 
 
    let mapFormat = format 
 
      .split("") 
 
      .reduce(function (a, b, i) { a[b] = i; return a;}, {}); 
 
    const dateStr2Array = dateStringCandidateValue.split(/[ :\-\/]/g); 
 
    const datePart = dateStr2Array.slice(0, 3); 
 
    let datePartFormatted = [ 
 
      +datePart[mapFormat.y], 
 
      +datePart[mapFormat.m]-1, 
 
      +datePart[mapFormat.d] ]; 
 
    if (dateStr2Array.length > 3) { 
 
     dateStr2Array.slice(3).forEach(t => datePartFormatted.push(+t)); 
 
    } 
 
    // test date validity according to given [format] 
 
    const dateTrial = new Date(Date.UTC.apply(null, datePartFormatted)); 
 
    return dateTrial && dateTrial.getFullYear() === datePartFormatted[0] && 
 
     dateTrial.getMonth() === datePartFormatted[1] && 
 
     dateTrial.getDate() === datePartFormatted[2] 
 
      ? dateTrial : 
 
      null; 
 
}
<pre id="result"></pre>

0

वहाँ नहीं कर रहे हैं किसी भी तरह से बनाया गया है, आप this की तरह कुछ करने की कोशिश करना चाहते हो सकता है: भी this question

+0

यह उत्तर दिनांक से बाहर दिखता है – insign

2
formatDateTime(sDate,FormatType) { 
    var lDate = new Date(sDate) 

    var month=new Array(12); 
    month[0]="January"; 
    month[1]="February"; 
    month[2]="March"; 
    month[3]="April"; 
    month[4]="May"; 
    month[5]="June"; 
    month[6]="July"; 
    month[7]="August"; 
    month[8]="September"; 
    month[9]="October"; 
    month[10]="November"; 
    month[11]="December"; 

    var weekday=new Array(7); 
    weekday[0]="Sunday"; 
    weekday[1]="Monday"; 
    weekday[2]="Tuesday"; 
    weekday[3]="Wednesday"; 
    weekday[4]="Thursday"; 
    weekday[5]="Friday"; 
    weekday[6]="Saturday"; 

    var hh = lDate.getHours() < 10 ? '0' + 
     lDate.getHours() : lDate.getHours(); 
    var mi = lDate.getMinutes() < 10 ? '0' + 
     lDate.getMinutes() : lDate.getMinutes(); 
    var ss = lDate.getSeconds() < 10 ? '0' + 
     lDate.getSeconds() : lDate.getSeconds(); 

    var d = lDate.getDate(); 
    var dd = d < 10 ? '0' + d : d; 
    var yyyy = lDate.getFullYear(); 
    var mon = eval(lDate.getMonth()+1); 
    var mm = (mon<10?'0'+mon:mon); 
    var monthName=month[lDate.getMonth()]; 
    var weekdayName=weekday[lDate.getDay()]; 

    if(FormatType==1) { 
     return mm+'/'+dd+'/'+yyyy+' '+hh+':'+mi; 
    } else if(FormatType==2) { 
     return weekdayName+', '+monthName+' '+ 
      dd +', ' + yyyy; 
    } else if(FormatType==3) { 
     return mm+'/'+dd+'/'+yyyy; 
    } else if(FormatType==4) { 
     var dd1 = lDate.getDate();  
     return dd1+'-'+Left(monthName,3)+'-'+yyyy;  
    } else if(FormatType==5) { 
     return mm+'/'+dd+'/'+yyyy+' '+hh+':'+mi+':'+ss; 
    } else if(FormatType == 6) { 
     return mon + '/' + d + '/' + yyyy + ' ' + 
      hh + ':' + mi + ':' + ss; 
    } else if(FormatType == 7) { 
     return dd + '-' + monthName.substring(0,3) + 
      '-' + yyyy + ' ' + hh + ':' + mi + ':' + ss; 
    } 
} 
35

यह new Date(string) साथ सरल रखें। यह यह करना चाहिए ...

var s = '01-01-1970 00:03:44'; 
var d = new Date(s); 
console.log(d); // ---> Thu Jan 01 1970 00:03:44 GMT-0500 (Eastern Standard Time) 

संदर्भ: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

+3

यह क्यों चुना गया उत्तर नहीं है?यह शायद यहां सबसे सहज ज्ञान है। – hlin117

+0

सफारी पर नहीं। इस स्ट्रिंग प्रारूप के साथ ऐसा करने के परिणामस्वरूप अमान्य दिनांक – yeahdixon

+0

सफारी समस्याओं पर अधिक जानकारी: http://stackoverflow.com/questions/4310953/invalid-date-in-safari जब संभव हो तो मैं सुझाव दूंगा कि आप दिनांक स्ट्रिंग प्रारूप का उपयोग करें स्वीकृत उत्तर में उद्धृत। उम्मीद है कि सफारी अंततः मानक के अनुरूप होगी। इस बीच, यदि यह आपके लिए एक समस्या है तो एक अतिरिक्त पुस्तकालय की आवश्यकता हो सकती है। – Luke

1

आप moment.js पुस्तकालय इस्तेमाल कर सकते हैं।

तो बस:

var stringDate = '01-01-1970 00:03:44'; 
var momentDateObj = moment(stringDate); 

चेकआउट उनके एपीआई भी स्वरूपण के साथ मदद करता है, बताया घटाकर (दिन, महीने, साल, अन्य पल वस्तुओं)।

मुझे उम्मीद है कि इससे मदद मिलती है।

रिज़

+0

आप कैसे जानते हैं कि आपकी स्ट्रिंगडेट को डीडी-एमएम के रूप में संरचित किया गया है और आपके उत्तर के साथ एमएम-डीडी नहीं है? क्या होगा यदि एक चीनी ब्राउज़र की स्थानीय सेटिंग्स 01-01-19 70 को एमएम-डीडी-वाईय के रूप में प्रतिक्रिया दे रही है और दूसरा ब्राउज़र दूसरे स्थान पर है डीडी-एमएम-वाई? – themis

+0

उन सभी का समर्थन करता है :) –

0

इस प्रारूप के लिए (चाहिए DatePart प्रारूप dd-mm-yyyy है) सादे जावास्क्रिप्ट में:

var dt = '01-01-1970 00:03:44'.split(/\-|\s/) 
 
    dat = new Date(dt.slice(0,3).reverse().join('/')+' '+dt[3]);

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