আমি কীভাবে জাভাস্ক্রিপ্টে একটি স্ট্রিংকে তারিখে রূপান্তর করতে পারি?
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
।
কিন্তু অপেক্ষা করো! কেবলমাত্র "আইএসও ফর্ম্যাট" ব্যবহার করা নিজে থেকে নির্ভরযোগ্যভাবে কাজ করে না। স্ট্রিংটি কখনও কখনও ইউটিসি এবং কখনও কখনও লোকালটাইম (ব্রাউজার বিক্রেতা এবং সংস্করণের উপর ভিত্তি করে) হিসাবে পার্স করা হয়। সর্বদা সর্বোত্তম অনুশীলনটি হ'ল ইউটিসি হিসাবে তারিখগুলি সঞ্চয় করা এবং ইউটিসি হিসাবে গণনা করা।
ইউটিসি যেমন একটি তারিখ পার্স করার জন্য, একটি যোগ জেড - যেমন: new Date('2011-04-11T10:20:30Z')
।
ইউটিসিতে একটি তারিখ প্রদর্শন করতে .toUTCString()
,
ব্যবহারকারীর স্থানীয় সময়ে একটি তারিখ প্রদর্শন করতে ব্যবহার করুন .toString()
।
এমডিএন সম্পর্কে আরও তথ্য | তারিখ এবং এই উত্তর ।
পুরাতন ইন্টারনেট এক্সপ্লোরার সামঞ্জস্যের জন্য (আইই সংস্করণ 9 কম তারিখ কন্সট্রাকটর মধ্যে ISO ফর্ম্যাটে সমর্থন করি না), আপনি এটা অংশে DATETIME স্ট্রিং উপস্থাপনা বিভক্ত করা উচিত এবং তারপর আপনি DATETIME অংশ, যেমন ব্যবহার কন্সট্রাকটর ব্যবহার করতে পারেন: new Date('2011', '04' - 1, '11', '11', '51', '00')
। নোট করুন যে মাসের সংখ্যা অবশ্যই 1 কম হতে হবে।
বিকল্প পদ্ধতি - একটি উপযুক্ত গ্রন্থাগার ব্যবহার করুন:
আপনি নির্দিষ্ট মুহূর্তের সাথে পার্সিং তারিখের অনুমতি দেয় এমন লাইব্রেরি মোমেন্ট.জেগুলিও নিতে পারেন ।
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
ইউটিসি এবং পার্স করা হয় toString ফেরৎ স্থানীয় সময় তাই নির্ভর করে ব্যবহারকারীদের টাইমজোন তে এটি সবচেয়ে স্পষ্টভাবে ভিন্ন ফলাফল ফিরে আসতে পারেন। যদি সর্বদা ইউটিসি হিসাবে সময় চান তবে আপনার টুএসটিস্ট্রিং ব্যবহার করা উচিত ।
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/
প্রস্তাবনা: আমি তারিখগুলির জন্য একটি প্যাকেজ ব্যবহার করার পরামর্শ দিচ্ছি যাতে প্রচুর ফর্ম্যাট থাকে কারণ সময় অঞ্চল এবং বিন্যাসের সময় ব্যবস্থাপনাই সত্যিই একটি বড় সমস্যা, মুহূর্তের জেএস প্রচুর ফর্ম্যাট সমাধান করে। আপনি একটি সাধারণ স্ট্রিং থেকে তারিখের মধ্যে সহজেই তারিখটিকে পার্স করতে পারেন তবে আমার মনে হয় যে সমস্ত ফর্ম্যাট এবং তারিখের বৈচিত্রগুলি সমর্থন করার জন্য এটি কঠোর কাজ।
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 শে জানুয়ারিতে ফিরে আসবে। আপনার এই চমকপ্রদ বাস্তবায়ন কখনও ব্যবহার করা উচিত নয়। ব্যবহার করুন মুহূর্ত পরিবর্তে।
আপনি যদি ভয়ঙ্কর মুহুর্তের গ্রন্থাগারটি ব্যবহার করতে পারেন (যেমন কোনও নোড.জেএস প্রকল্পে) আপনি সহজেই উদাহরণস্বরূপ আপনার তারিখটি পার্স করতে পারেন
var momentDate = moment("2014-09-15 09:00:00");
এবং এর মাধ্যমে জেএস তারিখ অবজেক্টটি অ্যাক্সেস করতে পারে
momentDate ().toDate();
new Date(2000, 10, 1)
আপনাকে "বুধ নভেম্বর 01000 00:00:00 GMT + 0100 (সিইটি)" দেবে
দেখুন যে মাসে 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;
}
পিটি-বিআর ফরমেটে রূপান্তর করুন:
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]);
}
আমি কাউকে সাহায্য আশা করি !!!
আমি এটির জন্য একটি ফ্রিডল তৈরি করেছি, আপনি যে কোনও তারিখের স্ট্রিংয়ে toDate () ফাংশন ব্যবহার করতে পারেন এবং তারিখের ফর্ম্যাটটি সরবরাহ করতে পারেন। এটি আপনাকে একটি তারিখ অবজেক্ট ফিরিয়ে দেবে। https://jsfiddle.net/Sushil231088/q56yd0rp/
"17/9/2014".toDate("dd/MM/yyyy", "/")
জেএসে আমি আজ থেকে স্ট্রিংটি রূপান্তর করার জন্য 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
যে কোনও তারিখের অবজেক্টটিকে একটি ইউটিসি তারিখের সাথে রূপান্তর করতে আমি এই ফাংশনটি তৈরি করেছি made
function dateToUTC(date) {
return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
}
dateToUTC(new Date());
এটি করার আরেকটি উপায়:
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'));
তারিখ বিন্যাসে রূপান্তরিত করার আগে যদি আপনার স্ট্রিংয়ের বিষয়বস্তুগুলি পরীক্ষা করতে হয়:
// 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;
}
আমি স্ট্রিংটিকে ডেট অবজেক্টে রূপান্তর করতে পার্সেডেটটাইম ফাংশন তৈরি করেছি এবং এটি সমস্ত ব্রাউজারে (আই ব্রাউজার সহ) কাজ করছে, কারও প্রয়োজন কিনা তা পরীক্ষা করে দেখুন, https://github.com/Umesh-Markande/Parse-String-to- তারিখ ইন সব-ব্রাউজার
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) আমি নির্বাচিত সমাধানগুলির জন্য পরীক্ষাগুলি সম্পাদন করি - দুটি ক্ষেত্রে: ইনপুট তারিখটি আইএসও 8601 স্ট্রিং (বিজ্ঞাপন, বিডি, সিডি, ডিডি, এডি) এবং ইনপুট তারিখ টাইমস্ট্যাম্প (এট, সিটি, ডিটি)। সমাধান বিডি, সিডি, সিটি জেএস তারিখের অবজেক্টকে ফলাফল হিসাবে ফিরিয়ে দেয় না, তবে আমি তাদের যুক্ত করি কারণ তারা কার্যকর হতে পারে তবে আমি তাদের বৈধ সমাধানের সাথে তুলনা করি না। এই ফলাফলগুলি বিশাল তারিখ পার্সিংয়ের জন্য কার্যকর হতে পারে।
new Date
(বিজ্ঞাপন) আইএসও তারিখ এবং টাইমস্ট্যাম্পের জন্য সমস্ত ব্রাউজারের জন্য moment.js (Dd) এর চেয়ে 50-100x দ্রুতnew Date
(বিজ্ঞাপন) 10 ডলার দ্রুত 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>
এটি করার আরেকটি উপায় হ'ল নামকৃত ক্যাপচার গ্রুপগুলির সাথে ফর্ম্যাট স্ট্রিংয়ের উপরে একটি রেজিেক্স তৈরি করা এবং তারপরে তারিখের স্ট্রিং থেকে দিন, মাস এবং বছর বের করার জন্য সেই রেজেক্সটি ব্যবহার করুন:
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