তারিখের স্ট্রিংটি সেই বিন্যাসে বৈধ তারিখ কিনা তা সঠিকভাবে নির্ধারণ করুন


183

আমি একটি এপিআই থেকে একটি তারিখ স্ট্রিং গ্রহণ করছি, এবং এটি হিসাবে ফর্ম্যাট করা হয় yyyy-mm-dd

আমি বর্তমানে স্ট্রিং ফর্ম্যাটটি যাচাই করতে একটি রেজেক্স ব্যবহার করছি যা ঠিক আছে, তবে আমি এমন কিছু ক্ষেত্রে দেখতে পাচ্ছি যেখানে স্ট্রিং অনুসারে এটি সঠিক ফর্ম্যাট হতে পারে তবে আসলে একটি অবৈধ তারিখ। যেমন 2013-13-01, উদাহরণস্বরূপ।

পিএইচপি-তে কোনও স্ট্রিং নেওয়ার মতো আরও ভাল উপায় আছে কি না 2013-13-01যে এটি কোনও বৈধ তারিখ কিনা তা বিন্যাসের জন্য নয় yyyy-mm-dd?



2
উত্তর এখানে যাই হোক না কেন অনেক ভাল।
সেবাস্তিয়ান

উত্তর:


452

আপনি DateTimeএই উদ্দেশ্যে ক্লাস ব্যবহার করতে পারেন :

function validateDate($date, $format = 'Y-m-d')
{
    $d = DateTime::createFromFormat($format, $date);
    // The Y ( 4 digits year ) returns TRUE for any integer with any number of digits so changing the comparison from == to === fixes the issue.
    return $d && $d->format($format) === $date;
}

[ এই উত্তর থেকে নেওয়া কাজ । এছাড়াও php.net । মূলত দ্বারা লিখিত Glavić]


পরীক্ষার কেস:

var_dump(validateDate('2013-13-01'));  // false
var_dump(validateDate('20132-13-01')); // false
var_dump(validateDate('2013-11-32'));  // false
var_dump(validateDate('2012-2-25'));   // false
var_dump(validateDate('2013-12-01'));  // true
var_dump(validateDate('1970-12-01'));  // true
var_dump(validateDate('2012-02-29'));  // true
var_dump(validateDate('2012', 'Y'));   // true
var_dump(validateDate('12012', 'Y'));  // false

ডেমো!


14
আপনি যদি পিএইচপি 5.2.x ব্যবহার strtotimeকরছেন তবে date('Y-m-d', $t)আপনার স্ট্রিংয়ের তারিখ পেতে ইউনিক্স টাইমস্ট্যাম্পটি ব্যবহার করা উচিত । তারপরে আপনি তাদের এই উত্তরটির মতোই তুলনা করুন।
পেড্রোমোনেল

2
@pedromanoel: স্ট্যান্ডার্ড ডেটটাইম ইনপুট জন্য আপনি ব্যবহার করতে পারেন strtotimeতবে অ-মানক বিন্যাসগুলির জন্য যা strtotimeস্বীকৃতি দেয় না, আপনার আরও কিছু সমাধানের প্রয়োজন হবে। এবং পিএইচপি সংস্করণে 5.2 সমর্থনটি জানুয়ারী 2011 এ বন্ধ হয়ে গেছে, 5.3 এর জন্য আগস্ট 2014
গ্লাভিć

2
এই তারিখটি বিবেচনা করুনvar_dump( validateDate('2012-2-9'));
59

4
ফাংশনটি সঠিকভাবে কাজ করে। এটি মিথ্যা প্রত্যাবর্তন করেছে কারণ আপনার নির্দিষ্ট থ্রিম ফর্ম্যাটটি ভুল ছিল। আপনি যদি শীর্ষস্থানীয় 'Y-n-j'জিরো ব্যতীত দিন এবং মাস ব্যবহার করতে চান তবে ফর্ম্যাটটি হওয়া উচিত , @ রিইনজলি।
অমল মুরালি

1
@ অ্যান্টোনডি'আন্ড্রেয়া: না, এটি সেই অংশটি ছাড়া কাজ করবে না। কারণ $dআপনার তারিখ দেওয়ার ক্ষেত্রে এটি মিথ্যা হবে না, যা ১৩ তম মাসের মতো (2013-13-01) ওভারফ্লাউন্ড অংশ রয়েছে। তবে এটি সত্যই নির্ভর করে আপনি কী চান। আপনার যদি validateDate('2015-55-66')বৈধ হওয়ার জন্য উদাহরণের প্রয়োজন হয় তবে হ্যাঁ, আপনাকে কেবল $dঅবজেক্ট কিনা তা পরীক্ষা করে নেওয়া দরকার ।
Glavić

80

কোনও স্ট্রিংয়ের তারিখ কিনা তা নির্ধারণ করুন

function checkIsAValidDate($myDateString){
    return (bool)strtotime($myDateString);
}

2
এটি বৈধ তারিখের ফর্ম্যাটগুলির পুরো পরিসীমা বৈধ করে yyyy-mm-dd
EWit

10
@ মিশেল আইরেস এটি কারণ হ'ল পিএইচপি 2015-02-30একটি বৈধ তারিখ হিসাবে দেখায় কারণ প্রদত্ত দিন যখন প্রদত্ত মাসে (বা নেতিবাচক) পিএইচপি পরবর্তী মাসের দিকে গড়িয়ে যায় তার চেয়ে বেশি হয়। যেহেতু তারিখটি বিন্যাসের গ্যারান্টিযুক্ত তাই এটিতে yyyy-mm-ddফিরতি পরিবর্তন করে স্থির করা যায় return (bool)strtotime($myDateString) && date("Y-m-d", strtotime($myDateString)) == $myDateString;
elitechief21

2
কেন (bool)strtotime('s')সত্য হিসাবে বেরিয়ে আসে?
পিয়ন

এটি 1 টি চেকআইএভিডিলডিট ("এফ") প্রদান করে;
বৈভব ভানুশালি 20'16

আমরা $myDateString = str_replace("/", '-', $myDateString);ফিরে আসার আগে ব্যবহার করতে পারি যদি তারিখের স্ট্রিংয়ে স্ল্যাশগুলি (/) থাকে তবে: - ডিডি / মিমি /
ইয়াই

37

পিএইচপি প্রাক বিল্ট ফাংশন সহ সহজ উপায়ে ব্যবহার করুন:

function checkmydate($date) {
  $tempDate = explode('-', $date);
  // checkdate(month, day, year)
  return checkdate($tempDate[1], $tempDate[2], $tempDate[0]);
}

পরীক্ষা

   checkmydate('2015-12-01'); //true
   checkmydate('2015-14-04'); //false

1
দুর্দান্ত সোজা সমাধান, প্রথমবারের মতো কাজ করেছেন, ধন্যবাদ :)
ডেভিড বেল

আবার, পরীক্ষাটি ব্যবহার করার সময়, কোনওটির অভ্যন্তরে ifসহজে ফিরে যেতে trueবা falseনিজেই পরীক্ষাটি ফেরত দেয়।
ভিক্টর শ্রড্ডার

4
এটি ধরে নিয়েছে $ টেম্পেট তারিখের অ্যারেতে কমপক্ষে 3 টি উপাদান রয়েছে।
27

2
@ ব্যক্তি 27:return sizeof($tmpDate) == 3 && checkdate($tmpDate[1]...
নিউরিনো

@ ভিনিট - এটি ব্যর্থ। বছর হয়, তাহলে 2, 20, 202, 2020বা এমনকি যদি বছর 20201- এটা সত্য প্রত্যেক সময় ফেরৎ।
রোলিংগার

16

স্ট্রিংটি কোনও মানহীন ফর্ম্যাট হলেও স্ট্রিংয়ের তারিখ কিনা তা নির্ধারণ করুন

(স্ট্রোটোটাইম কোনও কাস্টম বিন্যাস গ্রহণ করে না)

<?php
function validateDateTime($dateStr, $format)
{
    date_default_timezone_set('UTC');
    $date = DateTime::createFromFormat($format, $dateStr);
    return $date && ($date->format($format) === $dateStr);
}

// These return true
validateDateTime('2001-03-10 17:16:18', 'Y-m-d H:i:s');
validateDateTime('2001-03-10', 'Y-m-d');
validateDateTime('2001', 'Y');
validateDateTime('Mon', 'D');
validateDateTime('March 10, 2001, 5:16 pm', 'F j, Y, g:i a');
validateDateTime('March 10, 2001, 5:16 pm', 'F j, Y, g:i a');
validateDateTime('03.10.01', 'm.d.y');
validateDateTime('10, 3, 2001', 'j, n, Y');
validateDateTime('20010310', 'Ymd');
validateDateTime('05-16-18, 10-03-01', 'h-i-s, j-m-y');
validateDateTime('Monday 8th of August 2005 03:12:46 PM', 'l jS \of F Y h:i:s A');
validateDateTime('Wed, 25 Sep 2013 15:28:57', 'D, d M Y H:i:s');
validateDateTime('17:03:18 is the time', 'H:m:s \i\s \t\h\e \t\i\m\e');
validateDateTime('17:16:18', 'H:i:s');

// These return false
validateDateTime('2001-03-10 17:16:18', 'Y-m-D H:i:s');
validateDateTime('2001', 'm');
validateDateTime('Mon', 'D-m-y');
validateDateTime('Mon', 'D-m-y');
validateDateTime('2001-13-04', 'Y-m-d');

কোনও পরীক্ষা ব্যবহার ifকরার সময় , কেবলমাত্র ফিরে আসতে কোনওটির অভ্যন্তরে trueবা falseনিজেই পরীক্ষাটি ফেরত দিন।
ভিক্টর শ্রড্ডার

তবে 2018-3-2-24 মিথ্যা প্রত্যাবর্তন করছে, পদ্ধতিটি 2018-3-24 প্রাপ্ত হয়, যখন ফর্ম্যাটটি প্রয়োগ হয় 2018-03-24; আমি কীভাবে দুটি উপায়ে সত্যকে ফিরিয়ে দিতে পারি?
অ্যাকাইলস পেরেজ

12

এই বিকল্পটি কেবল সহজ নয়, প্রায় কোনও বিন্যাসও গ্রহণ করে, যদিও অ-মানক বিন্যাসের সাথে এটি বগী হতে পারে।

$timestamp = strtotime($date);
return $timestamp ? $date : null;

এই গ্রহণযোগ্য উত্তর হওয়া উচিত ছিল! অনেক অনেক সহজ।
ওয়েবমাস্টার জি

2
গুরুত্বপূর্ণ যে এটি ব্রিটিশ (d / m / Y) ফর্ম্যাটটির সাথে কাজ করবে না এটি গুরুত্বপূর্ণ কারণ এটি ধরে নেওয়া হবে যে এটি আমেরিকান (এম / ডি / ওয়াই) রূপান্তর করে। দিনটি 12 এর চেয়ে কম হলেই এটি কাজ করবে বলে মনে হচ্ছে!
সিলভেস্টার সারেসেভাস

@galki - আমি এটি পরীক্ষা করেছি এবং এটি নির্দিষ্ট মান ব্যর্থ করে। যদি $ তারিখ = '202-03-31' হয় এটি সত্য হয়। তবে এটি কোনও বৈধ তারিখ নয়। আমি দেখতে পেয়েছি যে আপনি যদি বছরটিকে একটি অ-বৈধ বছরে পরিবর্তন করেন তবে সর্বদা সত্য হয়।
রোলিংগার

@ রোলিংগ আজব ... সম্ভবত এটি 202 এডি দেখছে? 'স্ট্রোটোটাইম' কোন বছরের টাইমস্ট্যাম্প দেয়?
গালকি

@ গালকি - নির্দিষ্ট নয়, তবে 202একটি নেতিবাচক সংখ্যা প্রদান করে - যা এখনও পরীক্ষায় উত্তীর্ণ হয়।
রোলিংগার

9

আপনি মাসের তারিখ এবং বছরের জন্য তারিখটি পার্স করতে পারেন এবং তারপরে আপনি পিএইচপি ফাংশনটি ব্যবহার করতে পারেন checkdate()যা সম্পর্কে আপনি এখানে পড়তে পারেন: http://php.net/manual/en/function.checkdate.php

আপনি এটি ব্যবহার করে দেখতে পারেন:

$date="2013-13-01";

if (preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/",$date))
    {
        echo 'Date is valid';
    }else{
        echo 'Date is invalid';
    }

ফেব্রুয়ারির ক্ষেত্রে (এলিটেকাইফ 21 দ্বারা মন্তব্য করা হয়েছে) ফাংশনটি ভালিডেট ($ তারিখ) {রিটার্ন প্রিগ_ম্যাচ ("/ ^ [0-9] {4} - (0 [1-9] | 1 [0-2]) - (0 [1-9] | [1-2] [0-9] | 3 [0-1]) $ / ", $ তারিখ) && তারিখ (" ইয়ামডি ", স্ট্রোটোটাইম ($ তারিখ)) == $ তারিখ; }
আব্দুলওয়াদুদ

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

9

প্রদত্ত তারিখটি বৈধ কিনা তা যাচাই করার সহজ উপায়টি সম্ভবত এটি strtotimeনির্দিষ্ট তারিখের বিন্যাসে ফর্ম্যাট করে ব্যবহার করে ইউনিক্সটাইমে রূপান্তর করে, তারপরে তুলনা করুন:

function isValidDate($date) { return date('Y-m-d', strtotime($date)) === $date; }

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


1
আমি অনুভব করি যে এই উত্তরটি বেশ নিম্ন মানের, বিশেষত ইতিমধ্যে স্ট্রোটাইম উত্তরগুলি বিবেচনা করে।
গ্রম্পি ক্রাউটন

4
এটি সংক্ষিপ্ত উত্তর এবং এটি কার্যকর হয়। এটি স্বল্প মানের এটি বলা কিছুটা কঠোর।
টিম রজার্স

@ ব্যবহারকারী 4600953 - এটি সবচেয়ে সহজ কাজ করে। অন্য অনেকগুলি ব্যবহার করতে বলছে checkdate()- তবে বছরটি যদি কোনও মূল্য হয় তবে আমি চেকডেট ব্যর্থতাগুলি খুঁজে পাচ্ছি: 2, 20, 202, 2020, 20201- সমস্ত সত্য আসবে। আমি তোমার সমাধান নিয়ে যাচ্ছি!
রোলিংগার

7

ক্ল-সাহের উত্তরের সাথে সামঞ্জস্য করা, তবে এই শব্দটি আরও ভাল, খাটো ...

function checkmydate($date) {
  $tempDate = explode('-', $date);
  return checkdate($tempDate[1], $tempDate[2], $tempDate[0]);
}

পরীক্ষা

checkmydate('2015-12-01');//true
checkmydate('2015-14-04');//false

আপনার যদি পরীক্ষা করা দরকার count($tempDate) === 3তবে
ভিডিআরারিচাউ

@ ভিড্যারিকো না আপনি না, চেকডেটে বোমা দিলে তারা নিখোঁজ হয়, আপনি প্রত্যেকের জন্যই এসসেট () লিখতে পারতেন তবে আমি কেবল সতর্কতা দমন করতে পারতাম
মিঃ হিলিস

7

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

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

তবে আর ভয় নেই! আমরা আমাদের উদ্ধারের জন্য তরকারী ব্যবহার করতে পারি ! পিএইচপি এই কাজটিকে আনন্দদায়ক করে না, তবে পিএইচপি দিয়ে কারিঙ প্রয়োগ করা এখনও সম্ভব:

<?php
function validateDateTime($format)
{
    return function($dateStr) use ($format) {
        $date = DateTime::createFromFormat($format, $dateStr);
        return $date && $date->format($format) === $dateStr;
    };
}

তো, আমরা কী করলাম? মূলত আমরা একটি বেনামে ফাংশন বডিটি আবৃত করি এবং পরিবর্তে এই জাতীয় ফাংশনটি ফিরিয়ে দিয়েছি। আমরা বৈধতা ফাংশনটিকে এভাবে কল করতে পারি:

validateDateTime('Y-m-d H:i:s')('2017-02-06 17:07:11'); // true

হ্যাঁ, কোনও বড় পার্থক্য নয় ... তবে আসল শক্তিটি আংশিক প্রয়োগিত কার্য থেকে আসে , যা তরকারী দ্বারা সম্ভব হয়েছিল:

// Get a partially applied function
$validate = validateDateTime('Y-m-d H:i:s');

// Now you can use it everywhere, without repeating the format!
$validate('2017-02-06 17:09:31'); // true
$validate('1999-03-31 07:07:07'); // true
$validate('13-2-4 3:2:45'); // false

ফাংশনাল প্রোগ্রামিং এফটিডব্লিউ!


2
ভূমিকম্পের সেরা উত্তর আইএমএইচও (ওপির নির্দিষ্ট সমস্যাটি আরও নমনীয়তার সাথে সমাধান করে এবং উত্তরগুলির মতো একই পরিমাণের কোডের সমাধান করে)
স্টুবর্নশোয়াগুই

আইএমএইচও এটি সত্যই কুরুচিপূর্ণ প্রোগ্রামিং, আপনার মানগুলিকে একটি অ্যারেতে রাখুন এবং যাচাই করার জন্য তাদের মাধ্যমে লুপ করুন, তবে দয়া করে এটি করবেন না!
টিম

আমি কৌতূহলী @ টিম, আপনি কি আমাদের অ্যারে / লুপ বৈধতার উদাহরণ দিতে পারেন?
ভিক্টর শ্রদ্ধার

5

আমি ভীত যে সর্বাধিক ভোট সমাধান ( https://stackoverflow.com/a/19271434/3283279 ) সঠিকভাবে কাজ করছে না। চতুর্থ পরীক্ষার কেস (var_dump (বৈধতা তারিখ ('2012-2-25')); // মিথ্যা) ভুল। তারিখটি সঠিক, কারণ এটি ফর্ম্যাটটির সাথে মিলে যায় - এম শূন্যের সাথে বা ছাড়াই এম এক মাসের জন্য অনুমতি দেয় (দেখুন: http://php.net/manual/en/datetime.createfromformat.php )। অতএব একটি তারিখ 2012-2-25 ফর্ম্যাটে আছে Ymd এবং পরীক্ষা ক্ষেত্রে সত্য মিথ্যা হবে না।

আমি বিশ্বাস করি যে আরও ভাল সমাধান সম্ভাব্য ত্রুটি নিম্নলিখিত হিসাবে পরীক্ষা করা হয়:

function validateDate($date, $format = 'Y-m-d') {
    DateTime::createFromFormat($format, $date);
    $errors = DateTime::getLastErrors();

    return $errors['warning_count'] === 0 && $errors['error_count'] === 0;
}

3

এটা কেমন?

আমরা কেবল একটি ট্রাই-ক্যাচ ব্লক ব্যবহার করি।

$dateTime = 'an invalid datetime';

try {
    $dateTimeObject = new DateTime($dateTime);
} catch (Exception $exc) {
    echo 'Do something with an invalid DateTime';
}

এই পদ্ধতির শুধুমাত্র একটি তারিখ / সময় বিন্যাসে সীমাবদ্ধ নয় এবং আপনার কোনও ক্রিয়া সংজ্ঞায়িত করার দরকার নেই need


এটি ডেটটাইম মানের জন্য কাজ করবে না 0000-00-00 00:00:00
নাসিরউদ্দিন ভিএন

@ নাসিরউদ্দিনভিএন '0000-00-00 00:00:00'একটি কার্যকর তারিখের মান। এটি প্রথম মান। তবে ডেটটাইম অবজেক্টের তারিখের সম্পত্তি হবে '-0001-11-30 00:00:00'
জুলিয়ান

1

পরীক্ষিত রেজেক্স সমাধান:

    function isValidDate($date)
    {
            if (preg_match("/^(((((1[26]|2[048])00)|[12]\d([2468][048]|[13579][26]|0[48]))-((((0[13578]|1[02])-(0[1-9]|[12]\d|3[01]))|((0[469]|11)-(0[1-9]|[12]\d|30)))|(02-(0[1-9]|[12]\d))))|((([12]\d([02468][1235679]|[13579][01345789]))|((1[1345789]|2[1235679])00))-((((0[13578]|1[02])-(0[1-9]|[12]\d|3[01]))|((0[469]|11)-(0[1-9]|[12]\d|30)))|(02-(0[1-9]|1\d|2[0-8])))))$/", $date)) {
                    return $date;
            }
            return null;
    }

তারিখটি অবৈধ বা yyyy-mm-dd ফর্ম্যাট না হলে এটি নালায় ফিরে আসবে, অন্যথায় এটি তারিখটি ফিরিয়ে দেবে।



0
/*********************************************************************************
Returns TRUE if the input parameter is a valid date string in "YYYY-MM-DD" format (aka "MySQL date format")
The date separator can be only the '-' character.
*********************************************************************************/
function isMysqlDate($yyyymmdd)
{
    return checkdate(substr($yyyymmdd, 5, 2), substr($yyyymmdd, 8), substr($yyyymmdd, 0, 4)) 
        && (substr($yyyymmdd, 4, 1) === '-') 
        && (substr($yyyymmdd, 7, 1) === '-');
}

-1
    /**** date check is a recursive function. it's need 3 argument 
    MONTH,DAY,YEAR. ******/

    $always_valid_date = $this->date_check($month,$day,$year);

    private function date_check($month,$day,$year){

        /** checkdate() is a php function that check a date is valid 
        or not. if valid date it's return true else false.   **/

        $status = checkdate($month,$day,$year);

        if($status == true){

            $always_valid_date = $year . '-' . $month . '-' . $day;

            return $always_valid_date;

        }else{
            $day = ($day - 1);

            /**recursive call**/

            return $this->date_check($month,$day,$year);
        }

    }

1
কোনও ব্যাখ্যা ছাড়াই কোড খুব কার্যকর নয়।
গার্ট আর্নল্ড

-2

একবার চেষ্টা করে দেখুন:

$date = "2017-10-01";


function date_checker($input,$devider){
  $output = false;

  $input = explode($devider, $input);
  $year = $input[0];
  $month = $input[1];
  $day = $input[2];

  if (is_numeric($year) && is_numeric($month) && is_numeric($day)) {
    if (strlen($year) == 4 && strlen($month) == 2 && strlen($day) == 2) {
      $output = true;
    }
  }
  return $output;
}

if (date_checker($date, '-')) {
  echo "The function is working";
}else {
  echo "The function isNOT working";
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.