আমি কীভাবে জাভাস্ক্রিপ্টের ফর্ম্যাট স্পেসিফিকেশনের সাথে স্ট্রিংটিকে ডেটটাইমে রূপান্তর করতে পারি?


207

ফর্ম্যাট স্ট্রিং নির্দিষ্ট করে জাভাস্ক্রিপ্টে স্ট্রিংকে তারিখের সময় অবজেক্টে কীভাবে রূপান্তর করতে পারি?

আমি এরকম কিছু খুঁজছি:

var dateTime = convertToDateTime("23.11.2009 12:34:56", "dd.MM.yyyy HH:mm:ss");

2
বিটিডব্লিউ ডটস এবং হাইফেনগুলি তারিখ বিভাজক হিসাবে ব্যর্থ হতে পারে, স্ল্যাশ ঠিক আছে, সুতরাং (আমার পরীক্ষার সীমাতে) জাভাস্ক্রিপ্ট "2011/08/22 10:30:00" গ্রহণ করবে তবে এখনও (আইএসও 8601 থাকা সত্ত্বেও) "2011-09 -02 15:58:40 "যা - এটি দাবি করা হয় - জাভাস্ক্রিপ্ট ১.৮.৫ এ সমর্থিত।
ডেভ এভারিট 15

তারিখ.পার্স ফাংশনটি "মিমি / ডিডি / ইয়াই" ফর্ম্যাটে থাকা তারিখের স্ট্রিংটিকে বিশ্লেষণ করে। পার্স প্রয়োগের আগে দয়া করে স্ট্রিংটিকে "মিমি / ডিডি / ইয়াই" ফর্ম্যাটে রূপান্তর করুন।

প্রয়োজনীয় বিন্যাসে তারিখটি সরবরাহ করবেন না কেন? আমি এটি নতুন তারিখের মতো করি ('2012 11 25 18:00:00'); এবং এটি কাজ করে!
শিয়ালবাগগা

উত্তর:


88

আমি মনে করি এটি আপনাকে সহায়তা করতে পারে: http://www.mattkruse.com/javascript/date/

এমন একটি getDateFromFormat()ফাংশন রয়েছে যা আপনি আপনার সমস্যাটি সমাধান করতে কিছুটা টুইট করতে পারেন।

আপডেট: javascripttoolbox.com এ উপলব্ধ নমুনাগুলির একটি আপডেট সংস্করণ রয়েছে


5
TypeError: Object Date has no method 'getDateFromFormat'
ডেরেক 朕 會 功夫

6
উপরের লিঙ্কটিতে getDateFrom Format পদ্ধতি ডকের সাথে উপলব্ধ। উত্স এখানে উপলব্ধ: mattkruse.com
রাফায়েল মুলার

1
+1, ভাল লাইব্রেরি..শুদ্ধ জাভাস্ক্রিপ্ট ... এটি দুর্দান্ত। আপনাকে ধন্যবাদ
সুরেন্দ্র জানওয়ালি

7
উভয় লিঙ্কই মারা গেছে
সিথাম

1
আপনি যদি পারেন তবে লিংকটি আপডেট করুন। এটি আর সাহায্য করে না।
ট্যালেলেলি

98

আপনার স্ট্রিংয়ের সাথে সামঞ্জস্য থাকলে ব্যবহার করুন । যদি আপনার ফর্ম্যাটটি বেমানান হয় (আমার মনে হয় এটি) তবে আপনাকে নিজের স্ট্রিংটি পার্স করতে হবে (নিয়মিত প্রকাশের সাথে সহজ হওয়া উচিত) এবং বছর, মাস, তারিখ, ঘন্টা, মিনিট এবং দ্বিতীয়টির জন্য স্পষ্ট মান সহ একটি নতুন ডেট অবজেক্ট তৈরি করতে হবে ।new Date(dateString)Date.parse()


1
তারিখ.পার্সই সেরা সমাধান! এটি প্রায় সবকিছু পার্স! +1
ইয়ানাজ

7
@ আয়নাজ: আমেরিকায় প্রায় সমস্ত কিছুই ব্যবহৃত হয়, তবে ইউরোপের বিশাল অংশের ব্যবহৃত বিন্যাসটি হারিয়ে যাওয়া "প্রায়" খুব বড়। তবে নতুন তারিখটি কাস্টম ফাংশনগুলির জন্য একটি ভাল ভিত্তি।
পাভেল ভি।

নতুন তারিখ (ডেটস্ট্রিং) আমার পক্ষে সূক্ষ্মভাবে কাজ করেছে, তারিখ.পার্স () পরিবর্তে মিলি সেকেন্ডে রূপান্তর করে এবং তাই কোনও তারিখ প্রকার নয়, এমন একটি নম্বর প্রদান করে।
রিগান ওচোরা

68

@ ক্রিসটফ সমস্যাটি মোকাবেলায় একটি রেজেক্স ব্যবহার করার উল্লেখ করেছেন। আমি যা ব্যবহার করছি তা এখানে:

var dateString = "2010-08-09 01:02:03";
var reggie = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/;
var dateArray = reggie.exec(dateString); 
var dateObject = new Date(
    (+dateArray[1]),
    (+dateArray[2])-1, // Careful, month starts at 0!
    (+dateArray[3]),
    (+dateArray[4]),
    (+dateArray[5]),
    (+dateArray[6])
);

এটি কোনও উপায়ে বুদ্ধিমান নয়, কেবলমাত্র রেজেক্সকে কনফিগার করুন এবং new Date(blah)আপনার প্রয়োজন অনুসারে করুন।

সম্পাদনা: ES6- এ ডেস্ট্রাকচারিং ব্যবহার করে কিছুটা আরও বোধগম্য হতে পারে:

let dateString = "2010-08-09 01:02:03"
  , reggie = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/
  , [, year, month, day, hours, minutes, seconds] = reggie.exec(dateString)
  , dateObject = new Date(year, month-1, day, hours, minutes, seconds);

তবে সমস্ত সততার সাথে এই মুহুর্তে আমি মুহুর্তের মতো কিছুতে পৌঁছেছি


19
@ বামেগাকাপা কান্নার পরিবর্তে আপনি সম্ভবত উত্তরটি সম্পাদনা করতে এবং 'ভার'-এর নিজের যোগ করতে পারতেন?
অর্গানিকপান্ডা

আপনি /gপতাকাটি কেন ব্যবহার করছেন , কেবল পরে সেট lastIndexকরতে 0? শুধু একটি গ্লোবাল ম্যাচ ব্যবহার করবেন না।
রাই-

1
@ এমনিটেক এটি /gছিল একটি বিদ্যমান প্রকল্পের একটি slালু অনুলিপি / পেস্ট। lastindexএকজন সম্পাদক যুক্ত করেছিলেন ( \gআমি মনে করি লড়াই করার জন্য ?)। আমি এখন সেগুলি সরিয়ে ফেলব। এটি নির্দেশ করার জন্য আপনাকে ধন্যবাদ।
অর্গানিকপান্ডা

1
খুব সুন্দর আনওয়ার .. আমার পক্ষে সত্যিই দরকারী
জেঠিক

14

জাভাস্ক্রিপ্টে কোনও পরিশীলিত তারিখ / সময় বিন্যাসের রুটিন বিদ্যমান নেই।

ফর্ম্যাটড তারিখ আউটপুট জন্য আপনাকে একটি বাহ্যিক গ্রন্থাগার ব্যবহার করতে হবে, ফ্ল্যাগ্র্যান্ট বাদাসেরির "জাভাস্ক্রিপ্ট তারিখ ফর্ম্যাট" খুব আশাব্যঞ্জক দেখাচ্ছে।

ইনপুট রূপান্তরের জন্য ইতিমধ্যে বেশ কয়েকটি পরামর্শ দেওয়া হয়েছে। :)


3
"আছে" আপেক্ষিক। অবশ্যই আপনি নিজের বাস্তবায়ন তৈরি করতে পারেন। :)
টমলক

13

পরীক্ষা করে দেখুন Moment.js । এটি একটি আধুনিক এবং শক্তিশালী গ্রন্থাগার যা জাভাস্ক্রিপ্টের ভয়াবহ তারিখ ফাংশনগুলি (বা এর অভাব) তৈরি করে।


3
আমি ডাউনওয়েট করি নি, তবে সম্ভবত মোমেন্ট.জেজে কোন ফাংশনটি পছন্দসই আচরণটি দেবে তা জানতে পেরে ভাল লাগবে (আমাদের পক্ষে অলস লোকেরা যারা ইতিমধ্যে মোমেন্ট.জে ব্যবহার করছেন তবে নির্দিষ্ট ফাংশনটি ব্যবহার করতে জানেন না) ।
ম্যাট

স্থানীয়করণটি প্রতিশ্রুতিবদ্ধ দেখাচ্ছে, বিন্দু বিন্যাসের জন্য কোনও কেন্দ্রীয়-ইওরোপীয় লোকেল চয়ন করুন। তবে, আমি এটি পরীক্ষা করিনি এবং পূর্ণ তারিখের সময়ের ফর্ম্যাটটি আমার দেখা উদাহরণগুলিতে নয়।
পাভেল ভি।

আমি ডাউনওয়েট করি নি, তবে আমি কেবল বলতে চেয়েছিলাম যে এটি ধীর slow ডেস্কটপের জন্য ঠিক আছে, তবে মোবাইলের জন্য খুব ধীর হতে পারে (আপনার প্রয়োজনের উপর নির্ভর করে)।
gabn88

11

কেবলমাত্র এখানে আপডেট হওয়া উত্তরের জন্য, http://www.datejs.com/ এ একটি ভাল জেএস লিব রয়েছে

পার্টিং, ফর্ম্যাট এবং প্রক্রিয়াকরণের জন্য ডেটজগুলি একটি ওপেন সোর্স জাভাস্ক্রিপ্টের তারিখ লাইব্রেরি।


সেই সম্পাদনাটি রোল করা হয়েছে, যদিও এটি খুব সহায়ক তবে এটি একটি মন্তব্য বা পৃথক উত্তর হিসাবে যুক্ত করা উচিত।
অ্যালেক্সিস অ্যাব্রিল

যাইহোক মন্তব্য করার জন্য এটি বেশ দীর্ঘ ছিল এবং সদৃশ উত্তর যুক্ত করা ভুল। এই প্রশ্নের 155,000 টিরও বেশি ভিউ রয়েছে - আসুন এই লোকগুলিকে যথাসম্ভব তথ্য দিন! (উপায় দ্বারা - বিদ্যমান উত্তর সম্পাদনা করার জন্য স্ট্যাক ওভারফ্লোতে খুব সাধারণ বিষয় - আমি যদি আপনার উত্তরটি কেবল অনুলিপি করি তবে আপনি সম্ভবত আরও খারাপ বোধ করবেন ...)
কোবি

1
এবং যাইহোক, আপনি যদি আমার সম্পাদনাটি ভাল তা পছন্দ করেন না তবে দয়া করে আপনার উত্তরটি প্রসারিত করুন - "কেবলমাত্র এখানে একটি আপডেট হওয়া উত্তরের জন্য" একটি ফিলার, এবং এতে কিছু বিবরণ অনুপস্থিত। এই প্রশ্নটি এই মুহুর্তে কিছুটা দৃষ্টি আকর্ষণ করছে, যাইহোক, যে কারণে আপনি হঠাৎ 5 টি ভোট পেয়েছিলেন।
কোবি

7
var temp1 = "";
var temp2 = "";

var str1 = fd; 
var str2 = td;

var dt1  = str1.substring(0,2);
var dt2  = str2.substring(0,2);

var mon1 = str1.substring(3,5);
var mon2 = str2.substring(3,5);

var yr1  = str1.substring(6,10);  
var yr2  = str2.substring(6,10); 

temp1 = mon1 + "/" + dt1 + "/" + yr1;
temp2 = mon2 + "/" + dt2 + "/" + yr2;

var cfd = Date.parse(temp1);
var ctd = Date.parse(temp2);

var date1 = new Date(cfd); 
var date2 = new Date(ctd);

if(date1 > date2) { 
    alert("FROM DATE SHOULD BE MORE THAN TO DATE");
}

5

বাহ্যিক গ্রন্থাগারটি এক বা দুটি তারিখ বিশ্লেষণের জন্য একটি ওভারকিল, তাই আমি অলি এবং ক্রিস্টোফের সমাধানগুলি ব্যবহার করে নিজের ফাংশনটি তৈরি করেছিলাম । এখানে মধ্য ইউরোপে আমরা খুব কমই আয়েথিং ব্যবহার করি তবে ওপির ফর্ম্যাট, সুতরাং এখানে ব্যবহৃত সাধারণ অ্যাপ্লিকেশনগুলির জন্য এটি পর্যাপ্ত হওয়া উচিত।

function ParseDate(dateString) {
    //dd.mm.yyyy, or dd.mm.yy
    var dateArr = dateString.split(".");
    if (dateArr.length == 1) {
        return null;    //wrong format
    }
    //parse time after the year - separated by space
    var spacePos = dateArr[2].indexOf(" ");
    if(spacePos > 1) {
        var timeString = dateArr[2].substr(spacePos + 1);
        var timeArr = timeString.split(":");
        dateArr[2] = dateArr[2].substr(0, spacePos);
        if (timeArr.length == 2) {
            //minutes only
            return new Date(parseInt(dateArr[2]), parseInt(dateArr[1]-1), parseInt(dateArr[0]), parseInt(timeArr[0]), parseInt(timeArr[1]));
        } else {
            //including seconds
            return new Date(parseInt(dateArr[2]), parseInt(dateArr[1]-1), parseInt(dateArr[0]), parseInt(timeArr[0]), parseInt(timeArr[1]), parseInt(timeArr[2]))
        }
    } else {
        //gotcha at months - January is at 0, not 1 as one would expect
        return new Date(parseInt(dateArr[2]), parseInt(dateArr[1] - 1), parseInt(dateArr[0]));
    }
}

4

Date.parse() মোটামুটি বুদ্ধিমান তবে আমি গ্যারান্টি দিতে পারি না যে ফর্ম্যাটটি সঠিকভাবে বিশ্লেষণ করবে।

যদি এটি না হয় তবে আপনাকে দুটি ব্রিজ করার জন্য কিছু খুঁজে পেতে হবে। আপনার উদাহরণটি বেশ সহজ (খাঁটি সংখ্যক হওয়া) তাই কারও সাথে রিগেক্সের স্পর্শ (বা এমনকি string.split()- দ্রুততরও হতে পারে) জোড় করে parseInt()আপনাকে দ্রুত একটি তারিখ তৈরি করতে দেয়।


4
time = "2017-01-18T17:02:09.000+05:30"

t = new Date(time)

hr = ("0" + t.getHours()).slice(-2);
min = ("0" + t.getMinutes()).slice(-2);
sec = ("0" + t.getSeconds()).slice(-2);

t.getFullYear()+"-"+t.getMonth()+1+"-"+t.getDate()+" "+hr+":"+min+":"+sec

প্লাস 1 ফাংশনটি getmonth () কল করার পরে ভুল বলে মনে হচ্ছে
অর্জুনসিংহ

t.getMonth () + 1 সঠিক হিসাবে ডেট.জেটমনেথ () 0 ভিত্তিক মান দেয়।
Jussi Palo

3

শুধু আমার 5 সেন্ট দিতে।

আমার তারিখের ফর্ম্যাটটি dd.mm.yyyy (ইউকে ফর্ম্যাট) এবং উপরের উদাহরণগুলির মধ্যে আমার পক্ষে কাজ করা হয়নি। সমস্ত পার্সাররা মিমিটিকে দিন হিসাবে এবং ডিডি হিসাবে মাস হিসাবে বিবেচনা করছিলেন।

আমি এই লাইব্রেরিটি পেয়েছি: http://joey.mazzarelli.com/2008/11/25/easy-date-parsing-with- জাভাস্ক্রিপ্ট / এবং এটি কাজ করেছে, কারণ আপনি ক্ষেত্রের ক্রম বলতে পারেন:

>>console.log(new Date(Date.fromString('09.05.2012', {order: 'DMY'})));
Wed May 09 2012 00:00:00 GMT+0300 (EEST)

আমি আশা করি যে কাউকে সাহায্য করবে


লিঙ্কগুলি এখন মারা!

ভাল ... একটি দ্রুত আর্কাইভ.আরজি দেখিয়েছে: বিটবুকিট.আর / মমজারেলি / জেএসডেট / ডাউনলোডগুলি প্রকল্পের ইউআরএল।
আন্তন ভালক্ক

1

মোমেন্ট.জেএস এটি পরিচালনা করবে:

var momentDate = moment('23.11.2009 12:34:56', 'DD.MM.YYYY HH:mm:ss');
var date = momentDate.;

1
Moment.js দুর্দান্ত থাকাকালীন, ব্যবহারের ক্ষেত্রে অনেকগুলি আধিক্য রয়েছে যেখানে আপনাকে কেবল নেটিভ জাভাস্ক্রিপ্ট ব্যবহার করতে হবে। আমার বর্তমান ব্যবহারের ক্ষেত্রে কাউচডিবিতে একটি মানচিত্র ফাংশন
জ্যাচ স্মিথ

1

আপনি এই জন্য moment.js গ্রন্থাগারটি ব্যবহার করতে পারেন। আমি কেবল সময়-নির্দিষ্ট আউটপুট পেতে ব্যবহার করছি তবে আপনি কোন ধরণের বিন্যাস নির্বাচন করতে চান তা নির্বাচন করতে পারেন।

রেফারেন্স:

1. মুহুর্তের গ্রন্থাগার: https://momentjs.com/

২. সময় এবং তারিখ নির্দিষ্ট ফাংশন: https://timestamp.online/article/how-to-convert-timestamp-to-datetime-in- জাভাস্ক্রিপ্ট

convertDate(date) {
        var momentDate = moment(date).format('hh : mm A');
        return momentDate;
}

এবং আপনি এই পদ্ধতিটি কল করতে পারেন:

this.convertDate('2020-05-01T10:31:18.837Z');

আমি আসা করি এটা সাহায্য করবে. কোডিং উপভোগ করুন।


0

আরএফসি 822 -তে উল্লিখিত হিসাবে ডেট- পার্স রূপান্তর স্ট্রিংটি ডিডি-মিমি- ওয়াইওয়াইওয়াই রূপান্তর করতে সম্পূর্ণরূপে সন্তুষ্ট করার জন্য , আপনি যদি yyyy-mm-dd পার্স ব্যবহার করেন তবে ভুল হতে পারে।


এফওয়াইআই, আরএফসি 822 থেকে (পৃষ্ঠা: 25. মন্তব্য করার জন্য পাঠ্য দৈর্ঘ্য পূরণে আংশিকভাবে পরিষ্কার করা হয়েছে): আগস্ট 13, 1982 - 25 - আরএফসি # 822 5. তারিখ এবং সময় স্পেসিফিকেশন 5.1। SYNTAX তারিখ-সময় = [দিন ","] তারিখের সময়; ডিডি মিমি ইয়াহ এইচ: মিমি: এসএস জিজেড দিন = "সোম" / "মঙ্গল" / "বুধ" / "থু" / "শুক্র" / "শনি" / "সান" তারিখ = 1 * 2 ডিজিট মাস 2 ডিজিট; দিনের মাসের বছর যেমন 20 জুন 82 মাস = "জানুয়ারি" / "ফেব্রুয়ারি" / "মার" / "এপ্রিল" / "মে" / "জুন" / "জুলাই" / "আগস্ট" / "সেপ্টেম্বর" / "অক্টোবর" / " নভেম্বর "/" ডিসেম্বর "
ভ্যালেন্টিন রাস্ক

0
//Here pdate is the string date time
var date1=GetDate(pdate);
    function GetDate(a){
        var dateString = a.substr(6);
        var currentTime = new Date(parseInt(dateString ));
        var month =("0"+ (currentTime.getMonth() + 1)).slice(-2);
        var day =("0"+ currentTime.getDate()).slice(-2);
        var year = currentTime.getFullYear();
        var date = day + "/" + month + "/" + year;
        return date;
    }

ক্যোরিস্ট একটি বিন্যাসের স্ট্রিং নির্দিষ্ট করার জন্য বলেছিল ।
আরমালি

@ আর্মালি ইনপুট প্যারামিটারের মতো "/ তারিখ (1552415400000) /" স্ট্রিং ফর্ম্যাটে
অভিষেক কানারার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.