কোনও স্ট্রিং একটি তারিখের মান কিনা তা পরীক্ষা করুন


207

কোনও মান বৈধ তারিখ কিনা তা যাচাই করার সহজ উপায় কী, কোনও পরিচিত তারিখের ফর্ম্যাট অনুমোদিত।

উদাহরণ হিসেবে বলা যায় আমি মান 10-11-2009, 10/11/2009, 2009-11-10T07:00:00+0000সব তারিখ মান হিসেবে স্বীকৃত, যা করা উচিত, এবং মান 200, 10, 350, একটি তারিখের মান হিসাবে স্বীকৃত করা উচিত নয় পারে। এটি পরীক্ষা করা সহজ উপায় কী, যদি এটি এমনকি সম্ভব হয়? কারণ টাইমস্ট্যাম্পগুলিও অনুমোদিত ছিল।


উত্তর:


42

চান Date.parse()চলা?

এর সম্পর্কিত MDN ডকুমেন্টেশন পৃষ্ঠাটি দেখুন


24
এটির সাথে সতর্ক থাকুন কারণ এটি ফেব্রুয়ারিতে অবৈধ তারিখগুলির জন্য ফেরত আসবে, উদাহরণস্বরূপ: 2013-02-31
leojh

58
সাবধান হওয়ার আরও একটি কারণ - সংখ্যাগুলি তারিখ হিসাবে বিশ্লেষণ করে। Date.parse("4.3")হয় 986270400000
মোগসদাদ

আমি উপরের দুটি 'সাবধানতা' কেস নিয়ে একটি চেষ্টা করেছি: কনসোল.লগ (তারিখ.পার্স ("2013-02-31")); console.log (Date.parse ( "4.3")); এবং উভয় ক্ষেত্রে (ফায়ারফক্সে) এটি NaN ফিরিয়েছে, সুতরাং আমার জন্য ডেট.পার্স ঠিক আছে (আমি যাইহোক পার্সের আগে ড্যাশগুলির জন্য সঠিক দৈর্ঘ্য এবং সঠিক দৈর্ঘ্য))
ক্লাউডরঞ্জার

55
দুঃখিত @ অ্যাসমোর, এটি সঠিক উত্তর নয়। তারিখ.পার্সে যে কোনও স্ট্রিংকে এটির সংখ্যার সাথে পার্স করবে
jwerre

11
তারিখ.পার্স ("আমার নাম 8") 99662040000 হিসাবে আসছে যা ভুল। আমি এটি ব্যবহার করেছি এবং এখন ভোগ করছি।
রোহিত

250

2015 আপডেট

এটি একটি পুরানো প্রশ্ন তবে অন্যান্য নতুন প্রশ্ন যেমন:

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

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

মোমেন্ট ব্যবহার করা হচ্ছে

যেমনটি আমি এই উত্তরে ব্যাখ্যা করেছি যে বর্তমানে এটির জন্য একটি গ্রন্থাগার রয়েছে: মোমেন্ট.জেএস

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

এটি 12 কেবি মিনিফাইড / জিজেপড এবং নোড.জেএস এবং অন্যান্য জায়গায় কাজ করে:

bower install moment --save # bower
npm install moment --save   # npm
Install-Package Moment.js   # NuGet
spm install moment --save   # spm
meteor add momentjs:moment  # meteor

মোমেন্ট ব্যবহার করে আপনি বৈধ তারিখগুলি পরীক্ষা করতে খুব সুনির্দিষ্ট হতে পারেন। কখনও কখনও আপনার প্রত্যাশা করা ফর্ম্যাটটি সম্পর্কে কিছু সূত্র যুক্ত করা খুব গুরুত্বপূর্ণ। উদাহরণস্বরূপ, 06/22/2015 এর মতো একটি তারিখ বৈধ তারিখের মতো দেখায়, যদি না আপনি ডিডি / এমএম / ওয়াইওয়াই ফর্ম্যাট ব্যবহার করেন তবে এই তারিখটি অবৈধ হিসাবে প্রত্যাখ্যান করা উচিত। আপনি কীভাবে আপনি কী ফর্ম্যাটটি প্রত্যাশা করছেন তা মোমেন্টকে বলতে পারবেন এমন কয়েকটি উপায় রয়েছে, উদাহরণস্বরূপ:

moment("06/22/2015", "MM/DD/YYYY", true).isValid(); // true
moment("06/22/2015", "DD/MM/YYYY", true).isValid(); // false

trueযুক্তি তাই মোমেন্ট ইনপুট বিশ্লেষণ করতে হলে না চেষ্টা করবে না হয় ঠিক প্রদত্ত ফরম্যাটের এক সাথে সামঞ্জস্য (এটা আমার মতে একটি ডিফল্ট আচরণ কেমন হওয়া উচিত)।

আপনি অভ্যন্তরীণভাবে সরবরাহিত ফর্ম্যাটটি ব্যবহার করতে পারেন:

moment("2015-06-22T13:17:21+0000", moment.ISO_8601, true).isValid(); // true

এবং আপনি অ্যারে হিসাবে একাধিক ফর্ম্যাট ব্যবহার করতে পারেন:

var formats = [
    moment.ISO_8601,
    "MM/DD/YYYY  :)  HH*mm*ss"
];
moment("2015-06-22T13:17:21+0000", formats, true).isValid(); // true
moment("06/22/2015  :)  13*17*21", formats, true).isValid(); // true
moment("06/22/2015  :(  13*17*21", formats, true).isValid(); // false

দেখুন: ডেমো

অন্যান্য গ্রন্থাগার

আপনি যদি মোমেন্ট.জেএস ব্যবহার করতে না চান তবে অন্যান্য লাইব্রেরিও রয়েছে:

2016 আপডেট

আমি অস্থায়ী মডিউলটি তৈরি করেছি যা মুহুর্তের মতো (একটি উপসেট) তবে বিদ্যমান অবজেক্টগুলির রূপান্তর দ্বারা সৃষ্ট বিস্ময় ছাড়াই ( আরও তথ্যের জন্য ডক্স দেখুন)।

2018 আপডেট

আজ আমি মোমেন্টের পরিবর্তে তারিখ / সময় ম্যানিপুলেশনের জন্য লাক্সন ব্যবহার করার পরামর্শ দিচ্ছি , যা (মুহুর্তের বিপরীতে) সমস্ত বস্তুকে অপরিবর্তনীয় করে তোলে তাই খেজুরের স্পষ্ট পরিবর্তনের সাথে সম্পর্কিত কোনও বাজে আশ্চর্যের কিছু নেই।

অধিক তথ্য

আরো দেখুন:

জাভাস্ক্রিপ্ট তারিখ পার্সিং লাইব্রেরিতে রব গ্র্যাভেলের লেখা নিবন্ধগুলির একটি সিরিজ:

শেষের সারি

অবশ্যই যে কেউ চাকাটিকে পুনরায় উদ্ভাবন করতে, একটি নিয়মিত এক্সপ্রেশন লিখতে পারেন (তবে এটি করার আগে দয়া করে আইএসও 8601 এবং আরএফসি 3339 পড়ুন) বা ত্রুটি বার্তাগুলির পার্স করার জন্য এলোমেলো ডেটা সহ বাইট-ইন কনস্ট্রাক্টরকে কল করুন 'Invalid Date'(আপনি কি নিশ্চিত যে এই বার্তাটি সমস্ত প্ল্যাটফর্মে ঠিক একই রকম ? সমস্ত লোকেলগুলিতে? ভবিষ্যতে?) বা আপনি একটি পরীক্ষিত সমাধান ব্যবহার করতে পারেন এবং এটির উন্নতি করতে আপনার সময় ব্যবহার করতে পারেন, পুনরায় উদ্ভাবন না করে not এখানে তালিকাভুক্ত সমস্ত লাইব্রেরি ওপেন সোর্স, ফ্রি সফটওয়্যার।


4
কিভাবে এটি ব্যবহার করা উচিত? moment("whatever 123").isValid()আয় true
krivar

4
@ ক্রিভার এটির মতো এটি ব্যবহার করা ভাল: moment("06/22/2015", "DD/MM/YYYY", true).isValid();প্রত্যাশিত তারিখের ফর্ম্যাটটি স্পষ্টভাবে সরবরাহ করা হয়েছে এবং যুক্তিযুক্ত trueযার অর্থ কঠোর পরীক্ষা করা। আমি আরও উত্তর এবং আরও ভাল উদাহরণ সহ আমার উত্তর আপডেট।
আরএসপি

2
যদিও একই, তবে আমি ব্যবহারকারীর ইনপুটকে বৈধতা দিচ্ছি এবং আমি প্রত্যাশিত তারিখের ফর্ম্যাটটি জানি না ...
জান ভ্যান ডার হেইজেন

3
@ জনভান্ডারহেইগেন যদি অনুমান করা যায় যে 3/4/5 একটি বৈধ তারিখ এবং তাই এপ্রিল 1 লা 2015 হয় তবে আমি সমর্থিত ফর্ম্যাটগুলির সুস্পষ্ট তালিকায় সেই ফর্ম্যাটগুলি (এবং আরও অনেকগুলি সম্ভবত) যুক্ত করার পরামর্শ দেব। নোট করুন যে 3/4/5 আপনি উল্লেখ করেছেন তা সুস্পষ্ট বিন্যাস ছাড়াই অস্পষ্ট format
আরএসপি

3
এটি এসও
ফিল 2392

62

এই মুহুর্তে আমি এই মুহুর্তে যে অ্যাপটিতে কাজ করছি তাতে এই সমস্যাটি সমাধান করেছি:

ক্রিগার থেকে প্রাপ্ত প্রতিক্রিয়ার ভিত্তিতে আপডেট হয়েছে:

var isDate = function(date) {
    return (new Date(date) !== "Invalid Date") && !isNaN(new Date(date));
}

5
আমাকে ফিরতে হবে (নতুন তারিখ (তারিখ))। স্ট্রিং ()! == নোডের জন্য "অবৈধ তারিখ"। এটাও লক্ষ করুন? সত্য: মিথ্যা অপ্রয়োজনীয়। কেবল প্রকাশটি ফিরিয়ে দেওয়া এখানে যথেষ্ট হবে।
ডোমেনুক

আইই 8 তে new Date(date)আপনাকে 'অবৈধ তারিখ' দেয় না।
ক্রিলগার

13
এটি একটি ভাল উত্তর নয়। বাম প্রকাশটি NaN এর সময়সীমার সাথে একটি তারিখ অবজেক্ট ফিরিয়ে new Date(date) !== "Invalid Date"দেবে বলে সর্বদা সত্য ফিরে আসবে , যা কখনই স্ট্রিংতে হতে পারে না । টাইপ রূপান্তর কারণে "কাজ" ব্যবহার করে Using তবে যেহেতু তারিখের স্ট্রিংগুলি বিশিষ্ট করা এখনও মূলত বাস্তবায়ন নির্ভরশীল, আমাদের এলোমেলো ফর্ম্যাটগুলি পার্স করার জন্য এটির উপর নির্ভর করে seriously =====
রবজি

4
নতুন তারিখ ("469") এর ফলাফল মঙ্গল মঙ্গল 01 469 00:00:00 GMT + 0200 (EET)
ড্যান ওচিয়ানা

3
এটি মিথ্যাভাবে গৃহীত সঠিক উত্তরের মতো। isDate('Mac OS X 10.14.2')এখানে সত্য ফিরে আসে।
ব্র্যাড স্টেল

24

new Date(date) === 'Invalid Date'কেবল ফায়ারফক্স এবং ক্রোমে কাজ করে। আইই 8 (টেস্টিংয়ের উদ্দেশ্যে আমার মেশিনে থাকা একটি) এনএএন দেয়।

গ্রহণযোগ্য উত্তর হিসাবে বলা হয়েছিল, Date.parse(date)সংখ্যার জন্যও কাজ করবে। সুতরাং এটি পেতে, আপনি এটিও একটি সংখ্যা নয় তা পরীক্ষা করে দেখতে পারেন (যদি এটি এমন কিছু হয় যা আপনি নিশ্চিত করতে চান)।

var parsedDate = Date.parse(date);

// You want to check again for !isNaN(parsedDate) here because Dates can be converted
// to numbers, but a failed Date parse will not.
if (isNaN(date) && !isNaN(parsedDate)) {
    /* do your work */
}

2
আমি বুঝতে পারি এটি কয়েক বছর পরে, তবে isNanএটি কোনও ফাংশন নয়; প্রথম উদাহরণে ভুল মামলা।
টিম লুইস

কাজ করে না. যদি dateহয় তবে Foostreet 1আপনার অবস্থাটি সত্য হিসাবে মূল্যায়ন করা হবে।
ফ্যাবিয়ান পিকোন 13

9

কিভাবে ভালো কিছু সম্পর্কে? এটি পরীক্ষা করবে যদি এটি কোনও তারিখ অবজেক্ট বা তারিখের স্ট্রিং থাকে:

function isDate(value) {
    var dateFormat;
    if (toString.call(value) === '[object Date]') {
        return true;
    }
    if (typeof value.replace === 'function') {
        value.replace(/^\s+|\s+$/gm, '');
    }
    dateFormat = /(^\d{1,4}[\.|\\/|-]\d{1,2}[\.|\\/|-]\d{1,4})(\s*(?:0?[1-9]:[0-5]|1(?=[012])\d:[0-5])\d\s*[ap]m)?$/;
    return dateFormat.test(value);
}

আমার উল্লেখ করা উচিত যে এটি আইএসও ফর্ম্যাটযুক্ত স্ট্রিংগুলির জন্য পরীক্ষা করে না তবে RegExp এ আরও কিছু কাজ করার সাথে আপনার ভাল হওয়া উচিত।


7

এখানে উত্তরগুলির মধ্যে কোনওটিই ফেব্রুয়ারির ৩১ তারিখের মতো তারিখটি অবৈধ কিনা তা পরীক্ষা করে না।

//expected input dd/mm/yyyy or dd.mm.yyyy or dd-mm-yyyy
function isValidDate(s) {
  var separators = ['\\.', '\\-', '\\/'];
  var bits = s.split(new RegExp(separators.join('|'), 'g'));
  var d = new Date(bits[2], bits[1] - 1, bits[0]);
  return d.getFullYear() == bits[2] && d.getMonth() + 1 == bits[1];
} 

কারণ স্ট্রিংটি 'বৈধ' তারিখ কিনা তা যাচাই করার জন্য প্রশ্নটি ওয়েথার নয়, তবে কেবল স্ট্রিংয়ের দ্বারা পরীক্ষা করা একটি তারিখের ফর্ম্যাটকে উপস্থাপন করে।
থাইজার

@ থিজার ভাল পয়েন্ট আমি ঠিক করতে কিছু মনে করব না তবে আপনার প্রশ্নটি পুনরায় পড়তে গিয়ে আমি স্ট্যাম্পড হয়ে গেছি কারণ আপনি বলেছিলেন যে 10 টি বৈধ হওয়া উচিত নয় তবে সেই টাইমস্ট্যাম্পগুলির অনুমতি দেওয়া উচিত।
ইয়েকে

এক্সডি এমনকি এটি খেয়াল করেনি, আমার আগের দিনগুলি তারিখ / টাইমস্ট্যাম্প সহ একটি প্রশ্ন। আমি আজ পরে প্রশ্নটি সম্পাদনা করার চেষ্টা করব।
থাইজার

কেন মাস -1 এবং তারপরে মাস + 1?
কপিল রঘুওয়ানশি

@ ক্যাপিলআরগুওয়ানশি জাভাস্ক্রিপ্টের তারিখগুলি শূন্য ভিত্তিক মাস ব্যবহার করে, সুতরাং আপনার সঠিক তারিখ তৈরি করতে 1 টি বিয়োগ করতে হবে এবং এটি মূল মাসের সমান কিনা তা পরীক্ষা করতে 1 যোগ করতে হবে
ইয়েকে বলেছেন মেনিকা

5

এটি যাচাই করতে নিয়মিত অভিব্যক্তিটি ব্যবহার করুন।

isDate('2018-08-01T18:30:00.000Z');

isDate(_date){
        const _regExp  = new RegExp('^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?(Z)?$');
        return _regExp.test(_date);
    }

4

উপরের সমস্ত মন্তব্য উল্লেখ করে আমি একটি সমাধানে এসেছি।

Dateপাস করা যদি আইএসও ফর্ম্যাটে থাকে বা অন্য ফর্ম্যাটের জন্য ম্যানিপুলেট করতে হয় তবে এটি কাজ করে।

var isISO = "2018-08-01T18:30:00.000Z";

if (new Date(isISO) !== "Invalid Date" && !isNaN(new Date(isISO))) {
    if(isISO == new Date(isISO).toISOString()) {
        console.log("Valid date");
    } else {
        console.log("Invalid date");
    }
} else {
    console.log("Invalid date");
}

আপনি এখানে জেএসফিডেলে খেলতে পারেন ।


1
আমার অ্যাপ্লিকেশনটি যে তারিখের স্ট্রিংগুলি সমর্থন করে তার ফর্ম্যাটটি হওয়ায় এই সমাধানটি আমার পক্ষে সবচেয়ে ভাল কাজ করেছে YYYY-MM-DD, সুতরাং T00:00:00.000Zবৈধ স্ট্রিংগুলি পরীক্ষা করার জন্য এই সমাধানটি সংযুক্ত করা এবং এটি ব্যবহার করা তুচ্ছ ।
ত্বরান্বিত করুন

জাভাস্ক্রিপ্টের জন্য এটি কাজ করছে, তবে টাইপস্ক্রিপ্টে কীভাবে এটি ব্যবহার করবেন?
সায়ে

3

এখানে একটি উন্নত ফাংশন রয়েছে যা কেবলমাত্র ব্যবহার করে Date.parse():

function isDate(s) {
    if(isNaN(s) && !isNaN(Date.parse(s)))
        return true;
    else return false;
}

দ্রষ্টব্য: তারিখ.পার্স () সংখ্যাকে পার্স করবে: উদাহরণস্বরূপ Date.parse(1)একটি তারিখ ফিরিয়ে দেবে। সুতরাং এখানে আমরা পরীক্ষা করে দেখি sযে এটি যদি একটি তারিখ হয় তবে এটি একটি সংখ্যা নয়।


1
এটি 'টেস্ট 2' পাস করার মতো কাজ করে না এটি একটি সত্য তারিখ হিসাবে পাস করবে। ক্রোমের সর্বশেষ সংস্করণে পরীক্ষিত হয়েছে
user1751287

2

আমি এটা করতে হবে

var myDateStr= new Date("2015/5/2");

if( ! isNaN ( myDateStr.getMonth() )) {
    console.log("Valid date");
}
else {
    console.log("Invalid date");
}

এখানে খেলুন


2
এটি বর্তমান ক্রোম, সম্ভবত অন্যান্য ব্রাউজারগুলিতে কাজ করে না। আমি প্রদত্ত স্ট্রিংটি পরিবর্তন করেছি EXAMPLE STRING 12345এবং এটি "বৈধ তারিখ" ফেরত দেয়।

1

এখানে একটি সংক্ষিপ্ত সংস্করণ।

var isDate = function (date) {
    return!!(function(d){return(d!=='Invalid Date'&&!isNaN(d))})(new Date(date));
}

1
এখনও আমার উদাহরণটির জন্য কাজ করে না:isDate("  1")
টমাস

@ টম আপনার তারিখ নির্ধারণ করার আগে মানটিতে সাদা-স্পেস অক্ষর রয়েছে কিনা তা পরীক্ষা করা উচিত। আপনার সমস্যাটি একটি বিশেষ-কেস যা আপনার নিয়ামক যুক্তি দ্বারা পরিচালনা করা প্রয়োজন।
মিঃ পলিহর্ল

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

1

এই কলযোগ্য ফাংশনটি পুরোপুরি কাজ করে, বৈধ তারিখের জন্য সত্য দেয়। আইএসও ফর্ম্যাটে (yyyy-mm-dd বা yyyy / মিমি / ডিডি) তারিখ ব্যবহার করে কল করতে ভুলবেন না:

function validateDate(isoDate) {

    if (isNaN(Date.parse(isoDate))) {
        return false;
    } else {
        if (isoDate != (new Date(isoDate)).toISOString().substr(0,10)) {
            return false;
        }
    }
    return true;
}

1
এটি ভাল, তবে এটি পুরোপুরি প্রশ্নের উত্তর দেয় না। বিশেষত, এটি দেওয়া উদাহরণগুলির মধ্যে একটি '২০০৯-১১-১০টি ০0: 00: 00 + 0000' এর জন্য কাজ করে না।
আমদান

তারিখটি যাচাই করা উচিত হিসাবে এটি কাজ করে বলে মনে করবেন না ('2016-12-30T08: 00: 00.000Z') // মিথ্যা
জোসে ব্রাউন

এটি কাজ করে বা না করেই এটিকে সরল করা যায়return !isNaN(Date.parse(isoDate)) || isoDate == new Date(isoDate).toISOString().substr(0,10);
মিশেল জং

1

আমি জানি এটি একটি পুরানো প্রশ্ন তবে আমি একই সমস্যার মুখোমুখি হয়েছি এবং দেখেছি যে উত্তরগুলির কোনওটিই সঠিকভাবে কাজ করে নি - বিশেষ করে তারিখগুলি থেকে সংখ্যাগুলি (1,200,345, ইত্যাদি) ছাঁটাই, যা আসল প্রশ্ন। এখানে আমি বরং ভাবতে পারি একটি অপ্রথাবাদী পদ্ধতি এবং এটি কার্যকর বলে মনে হচ্ছে। এটি ব্যর্থ হবে এমন কোনও মামলা রয়েছে কিনা তা দয়া করে চিহ্নিত করুন।

if(sDate.toString() == parseInt(sDate).toString()) return false;

এটি সংখ্যা আগাছা করার জন্য লাইন। সুতরাং, পুরো ফাংশনটি দেখতে পারে:

function isDate(sDate) {  
  if(sDate.toString() == parseInt(sDate).toString()) return false; 
  var tryDate = new Date(sDate);
  return (tryDate && tryDate.toString() != "NaN" && tryDate != "Invalid Date");  
}

console.log("100", isDate(100));
console.log("234", isDate("234"));
console.log("hello", isDate("hello"));
console.log("25 Feb 2018", isDate("25 Feb 2018"));
console.log("2009-11-10T07:00:00+0000", isDate("2009-11-10T07:00:00+0000"));


1
console.log("hello 1 ", isDate("hello 1 "));সত্য ফিরে আসে
জন

তুমি ঠিক! আপনার কি সমাধান আছে? এখনও অবধি আমি মনে করি এখানে উত্তরগুলির কোনওটিরইই সঠিকভাবে প্রশ্নটির সঠিক উত্তর দেওয়া হয়নি!
পিকোলো

"100%", শতাংশ, সত্য
টুডমো প্রদান করে

0

কোনও তারিখ সম্পর্কিত ফাংশনটি পরীক্ষা করার জন্য এটি ঠিক আছে যে এটি কোনও তারিখ অবজেক্ট কিনা তা আবিষ্কার করার জন্য অবজেক্টটির জন্য উপলব্ধ?

মত

var l = new Date();
var isDate = (l.getDate !== undefined) ? true; false;

0

এভাবেই শেষ করছি up এটি সমস্ত ফর্ম্যাট কভার করবে না। আপনাকে সেই অনুযায়ী সামঞ্জস্য করতে হবে। আমার ফর্ম্যাটটিতে নিয়ন্ত্রণ আছে তাই এটি আমার পক্ষে কাজ করে

function isValidDate(s) {
            var dt = "";
            var bits = [];
            if (s && s.length >= 6) {
                if (s.indexOf("/") > -1) {
                    bits = s.split("/");
                }
                else if (s.indexOf("-") > -1) {
                    bits = s.split("-");
                }
                else if (s.indexOf(".") > -1) {
                    bits = s.split(".");
                }
                try {
                    dt = new Date(bits[2], bits[0] - 1, bits[1]);
                } catch (e) {
                    return false;
                }
                return (dt.getMonth() + 1) === parseInt(bits[0]);
            } else {
                return false;
            }
        }

-1

ঠিক আছে, এটি একটি পুরানো প্রশ্ন, তবে আমি এখানে সমাধানগুলি পরীক্ষা করার সময় আরও একটি সমাধান পেয়েছি। আমার জন্য গেটটাইম () ফাংশনটি তারিখের অবজেক্টটিতে উপস্থিত রয়েছে কিনা তা খতিয়ে দেখার জন্য কাজ করে:

const checkDate = new Date(dateString);

if (typeof checkDate.getTime !== 'function') {
  return;
}

-1

document.getElementById('r1').innerHTML = dayjs('sdsdsd').isValid()

document.getElementById('r2').innerHTML = dayjs('2/6/20').isValid()
<script src="https://unpkg.com/dayjs@1.8.21/dayjs.min.js"></script>

<p>'sdsdsd' is a date: <span id="r1"></span></p>
<p>'2/6/20' is a date: <span id="r2"></span></p>

আপনার জন্য হালকা ওজনের একটি গ্রন্থাগার প্রস্তুত: Day.js


এটি মূলত স্ট্যাকওভারফ্লোতে বিজ্ঞাপন দিচ্ছে, তা করা থেকে বিরত থাকুন।
c4sh

-4
SimpleDateFormat sdf = new SimpleDateFormat(dateFromat);
sdf.setLenient(false);

ডিফল্টরূপে এটি সত্যে সেট করা আছে। এমনকি ভুল ফর্ম্যাট এর স্ট্রিং ভাল মান প্রদান করে।

আমি এটি এরকম কিছু ব্যবহার করেছি:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
formatter.setLenient(false);
String value = "1990/13/23"; 

try {
      Date date = formatter.parse(value);
      System.out.println(date);
    }catch (ParseException e) 
  {
    System.out.println("its bad");
  }

5
... জাভাস্ক্রিপ্ট ?!
artparks

-5

এটা চেষ্টা কর:

if (var date = new Date(yourDateString)) {
    // if you get here then you have a valid date       
}

6
এটি আমার পক্ষে কাজ করে না। প্রথমে শর্তটির বর্ণটি বিশ্লেষণ করে না, তবে আপনি যদি এটি মুছে ফেলেন এবং এর মতো কিছু চেষ্টা করেন: যদি (তারিখ = নতুন তারিখ ("আবর্জনা")) {সতর্কতা (তারিখ); The তারিখ আবর্জনা হলেও, সতর্কতা এখনও কার্যকর হবে কারণ তারিখ ফাংশনটি "অবৈধ তারিখ" (ফায়ারফক্সে অন্তত) ফিরে আসবে তাই শর্তটি সত্য হিসাবে মূল্যায়ন করে। আমি অনুমান করি যে কোনও ব্রাউজার যদি অবৈধ তারিখে বাতিল হয়, তবে এটি সেই ব্রাউজারগুলিতে কাজ করবে। এখানে ব্রাউজারের অসঙ্গতি হতে পারে।
ক্লাউডরঞ্জার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.