मैं एक स्ट्रिंग को जावास्क्रिप्ट में तारीख में कैसे बदल सकता हूं?
var st = "date in some format"
var dt = new date();
var dt_st= //st in date format same as dt
Date -> String
या String -> Date
?
मैं एक स्ट्रिंग को जावास्क्रिप्ट में तारीख में कैसे बदल सकता हूं?
var st = "date in some format"
var dt = new date();
var dt_st= //st in date format same as dt
Date -> String
या String -> Date
?
जवाबों:
स्ट्रिंग पार्सिंग के लिए सबसे अच्छा स्ट्रिंग प्रारूप जावास्क्रिप्ट तिथि ऑब्जेक्ट कंस्ट्रक्टर के साथ एक साथ आईएसओ प्रारूप है।
आईएसओ प्रारूप के उदाहरण: YYYY-MM-DD
या YYYY-MM-DDTHH:MM:SS
।
लेकिन रुकें! बस "आईएसओ प्रारूप" का उपयोग करके मज़बूती से काम नहीं करता है। स्ट्रिंग को कभी-कभी UTC के रूप में और कभी-कभी स्थानीय समय (ब्राउज़र विक्रेता और संस्करण पर आधारित) के रूप में पार्स किया जाता है। सबसे अच्छा अभ्यास हमेशा UTC के रूप में दिनांक संग्रहीत करने और UTC के रूप में संगणना करने का होना चाहिए।
UTC के रूप में किसी तिथि को पार्स करने के लिए, Z - उदा: जोड़ें new Date('2011-04-11T10:20:30Z')
।
UTC में एक दिनांक प्रदर्शित करने के लिए, उपयोग करें .toUTCString()
,
उपयोगकर्ता के स्थानीय समय में दिनांक प्रदर्शित करने के लिए, उपयोग करें .toString()
।
एमडीएन पर अधिक जानकारी | दिनांक और यह उत्तर ।
पुराने इंटरनेट एक्सप्लोरर संगतता के लिए (IE संस्करण 9 से कम तारीख निर्माणकर्ता में आईएसओ प्रारूप का समर्थन नहीं करते हैं), आपको इसे भागों में डेटाइम स्ट्रिंग प्रतिनिधित्व को विभाजित करना चाहिए और फिर आप डेटाइम भागों का उपयोग करके कंस्ट्रक्टर का उपयोग कर सकते हैं, जैसे new Date('2011', '04' - 1, '11', '11', '51', '00')
:। ध्यान दें कि महीने की संख्या 1 कम होनी चाहिए।
वैकल्पिक विधि - एक उपयुक्त पुस्तकालय का उपयोग करें:
आप लाइब्रेरी Moment.js का लाभ भी ले सकते हैं जो निर्दिष्ट समय क्षेत्र के साथ पार्सिंग की तारीख की अनुमति देता है।
new Date('2011-04-11T11:51:00')
तो बनाई गई तारीख वैध है।
new Date('1970-30-02')
में अमान्य है , अमान्य दिनांक है क्योंकि एक वर्ष में 30 महीने नहीं होते हैं। आप महीनों तक नहीं बह सकते हैं, लेकिन जब आप दिनों को ओवरफ्लो करते हैं, तब यह क्रोम और फ़ायरफ़ॉक्स में एक वैध तारीख को हल होता है : new Date('1970-02-30')
तब नई तारीख ('1970-03-02') के समान दिन होता है।
दुर्भाग्य से मुझे यह पता चला
var mydate = new Date('2014-04-03');
console.log(mydate.toDateString());
रिटर्न "बुध अप्रैल 02 2014"। मुझे पता है कि यह पागल लगता है, लेकिन यह कुछ उपयोगकर्ताओं के लिए होता है।
बुलेटप्रूफ समाधान निम्नलिखित है:
var parts ='2014-04-03'.split('-');
// Please pay attention to the month (parts[1]); JavaScript counts months from 0:
// January - 0, February - 1, etc.
var mydate = new Date(parts[0], parts[1] - 1, parts[2]);
console.log(mydate.toDateString());
yyyy-MM-dd
UTC और के रूप में पार्स कर रहे हैं toString रिटर्न स्थानीय समय इसलिए आधार पर उपयोगकर्ताओं समय क्षेत्र पर यह सबसे निश्चित रूप से अलग-अलग परिणाम लौट सकते हैं। यदि हमेशा UTC के रूप में समय चाहते हैं तो आपको toUTCString का उपयोग करना चाहिए ।
var st = "26.04.2013";
var pattern = /(\d{2})\.(\d{2})\.(\d{4})/;
var dt = new Date(st.replace(pattern,'$3-$2-$1'));
और उत्पादन होगा:
dt => Date {Fri Apr 26 2013}
function stringToDate(_date,_format,_delimiter)
{
var formatLowerCase=_format.toLowerCase();
var formatItems=formatLowerCase.split(_delimiter);
var dateItems=_date.split(_delimiter);
var monthIndex=formatItems.indexOf("mm");
var dayIndex=formatItems.indexOf("dd");
var yearIndex=formatItems.indexOf("yyyy");
var month=parseInt(dateItems[monthIndex]);
month-=1;
var formatedDate = new Date(dateItems[yearIndex],month,dateItems[dayIndex]);
return formatedDate;
}
stringToDate("17/9/2014","dd/MM/yyyy","/");
stringToDate("9/17/2014","mm/dd/yyyy","/")
stringToDate("9-17-2014","mm-dd-yyyy","-")
.indexOf()
पद्धति पर भरोसा न करें क्योंकि यह पॉलीफ़िल के बिना संगत ब्राउज़र पार नहीं करता है। इसके बजाय, अधिक संगत .match()
या .test()
वेनिला जेएस विधियों का उपयोग करें।
var _delimiter = _format.match(/\W/g)[0];
फ़ंक्शन की शुरुआत में जोड़कर आप 3 पैरामीटर के स्वचालित रूप से सीमांकक और प्रीस्काइंड प्राप्त कर सकते हैं।
moment.js ( http://momentjs.com/ ) उपयोग की तारीखों के लिए एक पूर्ण और अच्छा पैकेज है और आईएसओ 8601 स्ट्रिंग्स का समर्थन करता है ।
आप एक स्ट्रिंग तिथि और प्रारूप जोड़ सकते हैं।
moment("12-25-1995", "MM-DD-YYYY");
और आप देख सकते हैं कि क्या तारीख मान्य है।
moment("not a real date").isValid(); //Returns false
let dt = moment("02-01-2019", "MM-DD-YYYY");
console.log(dt.fromNow()+' |'+dt.format('LL'))
// output: "3 months ago | February 1, 2019"
प्रलेखन देखें http://momentjs.com/docs/#/parsing/string-format/
सिफारिश: मैं उन तारीखों के लिए एक पैकेज का उपयोग करने की सलाह देता हूं जिनमें बहुत सारे प्रारूप हैं क्योंकि समयक्षेत्र और प्रारूप समय प्रबंधन वास्तव में एक बड़ी समस्या है, पल js बहुत सारे स्वरूपों को हल करते हैं। आप एक साधारण स्ट्रिंग से तारीख तक आसानी से पार्स कर सकते हैं, लेकिन मुझे लगता है कि सभी प्रारूपों और तारीखों के बदलाव का समर्थन करने के लिए एक कठिन काम है।
let dt = moment("02-01-2019", "MM-DD-YYYY");console.log(dt.fromNow()+' | '+dt.format('LL'))
आउटपुट: "3 महीने पहले | 1 फरवरी, 2019"
दिनांक () के तर्क के रूप में इसे पास करें:
var st = "date in some format"
var dt = new Date(st);
आप उदाहरण के लिए दिनांक, माह, वर्ष का उपयोग कर सकते हैं dt.getMonth()
:।
console.log(new Date('30-08-2018'))
और अमान्य दिनांक मिल
01/02/2020
अपने कंप्यूटर पर (यूके में) एक तारीख के लिए ऐसा करता हूं तो यह 1 फरवरी को वापस आ जाएगा, जहां अगर अमेरिका में ऐसा ही किया जाता है तो यह 2 जनवरी को वापस आ जाएगा। आप बहुत ज्यादा इस भोली कार्यान्वयन का उपयोग कभी नहीं करना चाहिए। इसके बजाय पल का उपयोग करें ।
यदि आप भयानक पल लाइब्रेरी (उदाहरण के लिए Node.js प्रोजेक्ट में) का उपयोग कर सकते हैं, तो आप आसानी से उदाहरण के लिए अपनी तिथि को पार्स कर सकते हैं
var momentDate = moment("2014-09-15 09:00:00");
और के माध्यम से जेएस दिनांक वस्तु का उपयोग कर सकते हैं
momentDate ().toDate();
new Date(2000, 10, 1)
आपको "बुध नवम्बर 01 2000 00:00:00 GMT + 0100 (CET)" देगा
देखें कि महीने के लिए 0 आपको जनवरी देता है
उन लोगों के लिए जो एक छोटे और स्मार्ट समाधान की तलाश कर रहे हैं:
String.prototype.toDate = function(format)
{
var normalized = this.replace(/[^a-zA-Z0-9]/g, '-');
var normalizedFormat= format.toLowerCase().replace(/[^a-zA-Z0-9]/g, '-');
var formatItems = normalizedFormat.split('-');
var dateItems = normalized.split('-');
var monthIndex = formatItems.indexOf("mm");
var dayIndex = formatItems.indexOf("dd");
var yearIndex = formatItems.indexOf("yyyy");
var hourIndex = formatItems.indexOf("hh");
var minutesIndex = formatItems.indexOf("ii");
var secondsIndex = formatItems.indexOf("ss");
var today = new Date();
var year = yearIndex>-1 ? dateItems[yearIndex] : today.getFullYear();
var month = monthIndex>-1 ? dateItems[monthIndex]-1 : today.getMonth()-1;
var day = dayIndex>-1 ? dateItems[dayIndex] : today.getDate();
var hour = hourIndex>-1 ? dateItems[hourIndex] : today.getHours();
var minute = minutesIndex>-1 ? dateItems[minutesIndex] : today.getMinutes();
var second = secondsIndex>-1 ? dateItems[secondsIndex] : today.getSeconds();
return new Date(year,month,day,hour,minute,second);
};
उदाहरण:
"22/03/2016 14:03:01".toDate("dd/mm/yyyy hh:ii:ss");
"2016-03-29 18:30:00".toDate("yyyy-mm-dd hh:ii:ss");
यदि आप प्रारूप "dd / MM / yyyy" से बदलना चाहते हैं। यहाँ एक उदाहरण है:
var pattern = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/;
var arrayDate = stringDate.match(pattern);
var dt = new Date(arrayDate[3], arrayDate[2] - 1, arrayDate[1]);
यह समाधान 9 से कम IE संस्करणों में काम करता है।
var ts = '1471793029764';
ts = Number(ts); // cast it to a Number
var date = new Date(ts); // works
var invalidDate = new Date('1471793029764'); // does not work. Invalid Date
undefined
मूल्य के बारे में क्या ? जैसे var date = new Date(undefined)
:?
Date.parse
लगभग वही मिलता है जो आप चाहते हैं। यह am
/ pm
भाग पर चोट करता है , लेकिन कुछ हैकिंग के साथ आप इसे काम कर सकते हैं:
var str = 'Sun Apr 25, 2010 3:30pm',
timestamp;
timestamp = Date.parse(str.replace(/[ap]m$/i, ''));
if(str.match(/pm$/i) >= 0) {
timestamp += 12 * 60 * 60 * 1000;
}
प्रारूप में बदलें pt-BR:
var dateString = "13/10/2014";
var dataSplit = dateString.split('/');
var dateConverted;
if (dataSplit[2].split(" ").length > 1) {
var hora = dataSplit[2].split(" ")[1].split(':');
dataSplit[2] = dataSplit[2].split(" ")[0];
dateConverted = new Date(dataSplit[2], dataSplit[1]-1, dataSplit[0], hora[0], hora[1]);
} else {
dateConverted = new Date(dataSplit[2], dataSplit[1] - 1, dataSplit[0]);
}
मुझे आशा है कि किसी की मदद करो !!!
मैंने इसके लिए एक फिडेल बनाया है, आप किसी भी तारीख स्ट्रिंग पर टॉड () फ़ंक्शन का उपयोग कर सकते हैं और तिथि प्रारूप प्रदान कर सकते हैं। यह आपको एक दिनांक ऑब्जेक्ट लौटाएगा। https://jsfiddle.net/Sushil231088/q56yd0rp/
"17/9/2014".toDate("dd/MM/yyyy", "/")
Js i use में स्ट्रिंग टू डेट करने के लिए http://momentjs.com/
moment().format('MMMM Do YYYY, h:mm:ss a'); // August 16th 2015, 4:17:24 pm
moment().format('dddd'); // Sunday
moment().format("MMM Do YY"); // Aug 16th 15
moment().format('YYYY [escaped] YYYY'); // 2015 escaped 2015
moment("20111031", "YYYYMMDD").fromNow(); // 4 years ago
moment("20120620", "YYYYMMDD").fromNow(); // 3 years ago
moment().startOf('day').fromNow(); // 16 hours ago
moment().endOf('day').fromNow(); // in 8 hours
फिर भी इसे करने का एक और तरीका:
String.prototype.toDate = function(format) {
format = format || "dmy";
var separator = this.match(/[^0-9]/)[0];
var components = this.split(separator);
var day, month, year;
for (var key in format) {
var fmt_value = format[key];
var value = components[key];
switch (fmt_value) {
case "d":
day = parseInt(value);
break;
case "m":
month = parseInt(value)-1;
break;
case "y":
year = parseInt(value);
}
}
return new Date(year, month, day);
};
a = "3/2/2017";
console.log(a.toDate("dmy"));
// Date 2017-02-03T00:00:00.000Z
आप यह कोशिश कर सकते हैं:
function formatDate(userDOB) {
const dob = new Date(userDOB);
const monthNames = [
'January', 'February', 'March', 'April', 'May', 'June', 'July',
'August', 'September', 'October', 'November', 'December'
];
const day = dob.getDate();
const monthIndex = dob.getMonth();
const year = dob.getFullYear();
// return day + ' ' + monthNames[monthIndex] + ' ' + year;
return `${day} ${monthNames[monthIndex]} ${year}`;
}
console.log(formatDate('1982-08-10'));
var date = new Date(year, month, day);
या
var date = new Date('01/01/1970');
दिनांक स्ट्रिंग स्ट्रिंग स्वरूप में '01 -01-1970 'फायरफॉक्स में काम नहीं करेगा, इसलिए दिनांक प्रारूप स्ट्रिंग में "-" के बजाय "/" का बेहतर उपयोग करें।
यदि आपको दिनांक प्रारूप को परिवर्तित करने से पहले स्ट्रिंग की सामग्री को जांचना है:
// Convert 'M/D/YY' to Date()
mdyToDate = function(mdy) {
var d = mdy.split(/[\/\-\.]/, 3);
if (d.length != 3) return null;
// Check if date is valid
var mon = parseInt(d[0]),
day = parseInt(d[1]),
year= parseInt(d[2]);
if (d[2].length == 2) year += 2000;
if (day <= 31 && mon <= 12 && year >= 2015)
return new Date(year, mon - 1, day);
return null;
}
मैंने स्ट्रिंग को दिनांक ऑब्जेक्ट में बदलने के लिए parseDateTime फ़ंक्शन बनाया है और यह सभी ब्राउज़र (IE ब्राउज़र सहित) में काम कर रहा है, अगर किसी को भी आवश्यक हो, तो जांच लें, संदर्भ https://github.com/Umesh-Markande/Parse-String-to-Date -इन सभी-ब्राउज़र
function parseDateTime(datetime) {
var monthNames = [
"January", "February", "March",
"April", "May", "June", "July",
"August", "September", "October",
"November", "December"
];
if(datetime.split(' ').length == 3){
var date = datetime.split(' ')[0];
var time = datetime.split(' ')[1].replace('.00','');
var timearray = time.split(':');
var hours = parseInt(time.split(':')[0]);
var format = datetime.split(' ')[2];
var bits = date.split(/\D/);
date = new Date(bits[0], --bits[1], bits[2]); /* if you change format of datetime which is passed to this function, you need to change bits e.x ( bits[0], bits[1], bits[2 ]) position as per date, months and year it represent bits array.*/
var day = date.getDate();
var monthIndex = date.getMonth();
var year = date.getFullYear();
if ((format === 'PM' || format === 'pm') && hours !== 12) {
hours += 12;
try{ time = hours+':'+timearray[1]+':'+timearray[2] }catch(e){ time = hours+':'+timearray[1] }
}
var formateddatetime = new Date(monthNames[monthIndex] + ' ' + day + ' ' + year + ' ' + time);
return formateddatetime;
}else if(datetime.split(' ').length == 2){
var date = datetime.split(' ')[0];
var time = datetime.split(' ')[1];
var bits = date.split(/\D/);
var datetimevalue = new Date(bits[0], --bits[1], bits[2]); /* if you change format of datetime which is passed to this function, you need to change bits e.x ( bits[0], bits[1], bits[2 ]) position as per date, months and year it represent bits array.*/
var day = datetimevalue.getDate();
var monthIndex = datetimevalue.getMonth();
var year = datetimevalue.getFullYear();
var formateddatetime = new Date(monthNames[monthIndex] + ' ' + day + ' ' + year + ' ' + time);
return formateddatetime;
}else if(datetime != ''){
var bits = datetime.split(/\D/);
var date = new Date(bits[0], --bits[1], bits[2]); /* if you change format of datetime which is passed to this function, you need to change bits e.x ( bits[0], bits[1], bits[2 ]) position as per date, months and year it represent bits array.*/
return date;
}
return datetime;
}
var date1 = '2018-05-14 05:04:22 AM'; // yyyy-mm-dd hh:mm:ss A
var date2 = '2018/05/14 05:04:22 AM'; // yyyy/mm/dd hh:mm:ss A
var date3 = '2018/05/04'; // yyyy/mm/dd
var date4 = '2018-05-04'; // yyyy-mm-dd
var date5 = '2018-05-14 15:04:22'; // yyyy-mm-dd HH:mm:ss
var date6 = '2018/05/14 14:04:22'; // yyyy/mm/dd HH:mm:ss
console.log(parseDateTime(date1))
console.log(parseDateTime(date2))
console.log(parseDateTime(date3))
console.log(parseDateTime(date4))
console.log(parseDateTime(date5))
console.log(parseDateTime(date6))
**Output---**
Mon May 14 2018 05:04:22 GMT+0530 (India Standard Time)
Mon May 14 2018 05:04:22 GMT+0530 (India Standard Time)
Fri May 04 2018 00:00:00 GMT+0530 (India Standard Time)
Fri May 04 2018 00:00:00 GMT+0530 (India Standard Time)
Mon May 14 2018 15:04:22 GMT+0530 (India Standard Time)
Mon May 14 2018 14:04:22 GMT+0530 (India Standard Time)
यह उत्तर कासेम के उत्तर पर आधारित है, लेकिन यह दो अंकों के वर्षों को भी संभालता है। मैंने कसीम के उत्तर के लिए एक संपादन प्रस्तुत किया, लेकिन अगर यह स्वीकृत नहीं था, तो मैं इसे एक अलग उत्तर के रूप में भी प्रस्तुत कर रहा हूं।
function stringToDate(_date,_format,_delimiter) {
var formatLowerCase=_format.toLowerCase();
var formatItems=formatLowerCase.split(_delimiter);
var dateItems=_date.split(_delimiter);
var monthIndex=formatItems.indexOf("mm");
var dayIndex=formatItems.indexOf("dd");
var yearIndex=formatItems.indexOf("yyyy");
var year = parseInt(dateItems[yearIndex]);
// adjust for 2 digit year
if (year < 100) { year += 2000; }
var month=parseInt(dateItems[monthIndex]);
month-=1;
var formatedDate = new Date(year,month,dateItems[dayIndex]);
return formatedDate;
}
stringToDate("17/9/14","dd/MM/yyyy","/");
stringToDate("17/9/2014","dd/MM/yyyy","/");
stringToDate("9/17/2014","mm/dd/yyyy","/")
stringToDate("9-17-2014","mm-dd-yyyy","-")
आप रेगेक्स का उपयोग करके स्ट्रिंग को पार्स करने के लिए विस्तार से समय और फिर तारीख या कोई रिटर्न फॉर्मेट बना सकते हैं:
//example : let dateString = "2018-08-17 01:02:03.4"
function strToDate(dateString){
let reggie = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2}).(\d{1})/
, [,year, month, day, hours, minutes, seconds, miliseconds] = reggie.exec(dateString)
, dateObject = new Date(year, month-1, day, hours, minutes, seconds, miliseconds);
return dateObject;
}
alert(strToDate(dateString));
आज (2020/05/08) मैं चुना समाधान के लिए परीक्षण करने - दो मामलों के लिए: इनपुट तारीख ISO8601 स्ट्रिंग है (विज्ञापन, बीडी, Cd, डीडी, एड) और इनपुट तारीख है टाइमस्टैम्प (At, Ct, Dt) है। समाधान बीडी, सीडी, सीटी परिणाम के रूप में जेएस डेट ऑब्जेक्ट वापस नहीं करते हैं, लेकिन मैं उन्हें जोड़ता हूं क्योंकि वे उपयोगी हो सकते हैं लेकिन मैं उन्हें वैध समाधानों के साथ तुलना नहीं करता हूं। यह परिणाम बड़े पैमाने पर तिथि पार्सिंग के लिए उपयोगी हो सकते हैं।
new Date
(विज्ञापन) आईएसओ तिथि और टाइमस्टैम्प के लिए सभी ब्राउज़रों के लिए क्षण (जेडडी) से 50-100x तेज हैnew Date
(विज्ञापन) ~ 10x से अधिक तेज हैparseDate
(एड) कीDate.parse
यदि सभी ब्राउज़र पर आईएसओ तिथि से टाइमस्टैम्प प्राप्त करने की आवश्यकता है तो समाधान (बीडी) सबसे तेज़ हैमैं क्रोम 81.0, सफारी 13.1, फ़ायरफ़ॉक्स 75.0 पर मैको हाई सिएरा 10.13.6 पर टेस्ट करता हूं। समाधान parseDate
(एड) उपयोग new Date(0)
और मैन्युअल रूप से सेट यूटीसी तारीख घटक।
क्रोम के लिए परिणाम
आईएसओ 8601-एसक डेटस्ट्रीम, मानक के रूप में उत्कृष्ट है, अभी भी व्यापक रूप से समर्थित नहीं हैं।
यह पता लगाने के लिए एक बढ़िया संसाधन है कि आपको किस डेटा स्वरूप का उपयोग करना चाहिए:
http://dygraphs.com/date-formats.html
हां, इसका अर्थ है कि आपका डेटास्ट्रिंग उतना ही सरल हो सकता है जितना कि विरोध किया जा सकता है
"2014/10/13 23:57:52"
के बजाय
"2014-10-13 23:57:52"
इस कोड का उपयोग करें: (मेरी समस्या इस कोड के साथ हल की गई थी)
function dateDiff(date1, date2){
var diff = {} // Initialisation du retour
var tmp = date2 - date1;
tmp = Math.floor(tmp/1000); // Nombre de secondes entre les 2 dates
diff.sec = tmp % 60; // Extraction du nombre de secondes
tmp = Math.floor((tmp-diff.sec)/60); // Nombre de minutes (partie entière)
diff.min = tmp % 60; // Extraction du nombre de minutes
tmp = Math.floor((tmp-diff.min)/60); // Nombre d'heures (entières)
diff.hour = tmp % 24; // Extraction du nombre d'heures
tmp = Math.floor((tmp-diff.hour)/24); // Nombre de jours restants
diff.day = tmp;
return diff;
}
मैंने एक पुन: प्रयोज्य फ़ंक्शन लिखा था जिसका उपयोग मैं तब करता हूं जब मुझे सर्वर से तारीख के तार मिलते हैं।
आप अपने वांछित परिसीमन (/ - आदि ..) को पारित कर सकते हैं जो split()
विधि का उपयोग करने के लिए दिन महीने और वर्ष को अलग करता है ।
आप इसे इस कार्य उदाहरण पर देख और परख सकते हैं ।
<!DOCTYPE html>
<html>
<head>
<style>
</style>
</head>
<body>
<div>
<span>day:
</span>
<span id='day'>
</span>
</div>
<div>
<span>month:
</span>
<span id='month'>
</span>
</div>
<div>
<span>year:
</span>
<span id='year'>
</span>
</div>
<br/>
<input type="button" id="" value="convert" onClick="convert('/','28/10/1980')"/>
<span>28/10/1980
</span>
<script>
function convert(delimiter,dateString)
{
var splitted = dateString.split('/');
// create a new date from the splitted string
var myDate = new Date(splitted[2],splitted[1],splitted[0]);
// now you can access the Date and use its methods
document.getElementById('day').innerHTML = myDate.getDate();
document.getElementById('month').innerHTML = myDate.getMonth();
document.getElementById('year').innerHTML = myDate.getFullYear();
}
</script>
</body>
</html>
फिर भी एक और तरीका यह है कि प्रारूप स्ट्रिंग पर कैप्चर किए गए समूहों के नाम के साथ एक regex का निर्माण करें और फिर तारीख स्ट्रिंग से दिन, महीने और वर्ष निकालने के लिए उस regex का उपयोग करें:
function parseDate(dateStr, format) {
const regex = format.toLocaleLowerCase()
.replace(/\bd+\b/, '(?<day>\\d+)')
.replace(/\bm+\b/, '(?<month>\\d+)')
.replace(/\by+\b/, '(?<year>\\d+)')
const parts = new RegExp(regex).exec(dateStr) || {};
const { year, month, day } = parts.groups || {};
return parts.length === 4 ? new Date(year, month-1, day) : undefined;
}
const printDate = x => console.log(x ? x.toLocaleDateString() : x);
printDate(parseDate('05/11/1896', 'dd/mm/YYYY'));
printDate(parseDate('07-12-2000', 'dd-mm-yy'));
printDate(parseDate('07:12:2000', 'dd:mm:yy'));
printDate(parseDate('2017/6/3', 'yy/MM/dd'));
printDate(parseDate('2017-6-15', 'y-m-d'));
printDate(parseDate('2015 6 25', 'y m d'));
printDate(parseDate('2015625', 'y m d')); // bad format