উত্তর:
strtotime($var);
এটিকে একটি সময়ের মানে পরিণত করে
time() - strtotime($var);
এর পর থেকে আপনাকে কয়েক সেকেন্ড দেয় $var
if((time()-(60*60*24)) < strtotime($var))
পরীক্ষা হবে $var
শেষ দিনে মধ্যে হয়েছে।
স্ট্যান্ডার্ড স্ট্রিং তুলনার জন্য এই ফর্ম্যাটটি পুরোপুরি উপযুক্ত eg
if ($date1 > $date2){
//Action
}
যে ফরম্যাটে আজকের তারিখ করতে, খালি ব্যবহার করুন: date("Y-m-d H:i:s")
।
তাই:
$today = date("Y-m-d H:i:s");
$date = "2010-01-21 00:00:00";
if ($date < $today) {}
এটি সেই ফর্ম্যাটটির সৌন্দর্য: এটি দুর্দান্তভাবে আদেশ করে। অবশ্যই, হতে পারে আপনার সঠিক পরিস্থিতির উপর নির্ভর করে এটি কম দক্ষ পারে তবে এটি আরও অনেক বেশি সুবিধাজনক হতে পারে এবং আরও রক্ষণাবেক্ষণযোগ্য কোডের দিকে নিয়ে যেতে পারে - সত্যিকারের রায়টি কল করার জন্য আমাদের আরও কিছু জানা দরকার।
সঠিক সময় অঞ্চলটির জন্য, আপনি ব্যবহার করতে পারেন, উদাহরণস্বরূপ,
date_default_timezone_set('America/New_York');
উপলভ্য পিএইচপি টাইমজোনগুলি উল্লেখ করতে এখানে ক্লিক করুন ।
mm/dd/yyyy
ফরম্যাটে রূপান্তর করার চেষ্টা করে তারপরে তুলনা করে তত দ্রুত । বিকাশকারীদের সিস্টেমে একাধিক টাইম জোনে তারিখ থাকলে এটি সর্বদা আমাকে চিন্তিত করে। আমি মনে করি আপনার সিস্টেমে সর্বদা সিঙ্গল টাইম জোনে তারিখগুলি সংরক্ষণ করা ভাল এবং তারপরে যা টাইমজোন প্রয়োজন তা এটিকে প্রদর্শন করুন। আমি 1998 এর আশেপাশে yyyy-mm-dd
ফর্ম্যাটটি (বা yyyymmdd
) ব্যবহার করা শুরু করি যখন আমি বুঝতে পারি যে এটি এসকিউএল সার্ভারেও আরও দ্রুততর আকার ধারণ করে।
আপনি এখানে যান:
function isToday($time) // midnight second
{
return (strtotime($time) === strtotime('today'));
}
isToday('2010-01-22 00:00:00.0'); // true
এছাড়াও, আরও কিছু সহায়ক ফাংশন:
function isPast($time)
{
return (strtotime($time) < time());
}
function isFuture($time)
{
return (strtotime($time) > time());
}
if(strtotime('2013-01-22 00:00:00.00') < time()){....}
এবং এটি আমার জন্য করেছে।
বোবিবি জ্যাকটি সম্পূর্ণ করতে ডেটটাইম ওবজেক্ট ব্যবহার করুন, যদি আপনার পিএইচপি 5.2.2+ থাকে:
if(new DateTime() > new DateTime($var)){
// $var is before today so use it
}
আপনি DateTime
ক্লাসটি ব্যবহার করতে পারেন :
$past = new DateTime("2010-01-01 00:00:00");
$now = new DateTime();
$future = new DateTime("2021-01-01 00:00:00");
তুলনা অপারেটর কাজ *:
var_dump($past < $now); // bool(true)
var_dump($future < $now); // bool(false)
var_dump($now == $past); // bool(false)
var_dump($now == new DateTime()); // bool(true)
var_dump($now == $future); // bool(false)
var_dump($past > $now); // bool(false)
var_dump($future > $now); // bool(true)
ডেটটাইম অবজেক্ট থেকে টাইমস্ট্যাম্প মানগুলি ধরে নেওয়া এবং তাদের তুলনা করাও সম্ভব:
var_dump($past ->getTimestamp()); // int(1262286000)
var_dump($now ->getTimestamp()); // int(1431686228)
var_dump($future->getTimestamp()); // int(1577818800)
var_dump($past ->getTimestamp() < $now->getTimestamp()); // bool(true)
var_dump($future->getTimestamp() > $now->getTimestamp()); // bool(true)
* নোট করুন যে ===
দুটি একই ডেটটাইম অবজেক্টের একই তারিখের উপস্থাপন করার পরেও দুটি আলাদা ডেটটাইম অবজেক্টের সাথে তুলনা করার সময় মিথ্যা ফেরত দেয়।
$future
অতীত হয়ে গেছে। : পি
$toBeComparedDate = '2014-08-12';
$today = (new DateTime())->format('Y-m-d'); //use format whatever you are using
$expiry = (new DateTime($toBeComparedDate))->format('Y-m-d');
var_dump(strtotime($today) > strtotime($expiry)); //false or true
$var
সমান খুব ওপি মধ্যে
আমার অভিজ্ঞতার ভিত্তিতে একটি সতর্কতা, যদি আপনার উদ্দেশ্যটি কেবলমাত্র তারিখের সাথে জড়িত থাকে তবে টাইমস্ট্যাম্পটি অন্তর্ভুক্ত করতে সাবধান হন । উদাহরণস্বরূপ, আজকের দিনটি বলে "2016-11-09"
। টাইমস্ট্যাম্প জড়িত তুলনা এখানে যুক্তি বাতিল করা হবে। উদাহরণ,
// input
$var = "2016-11-09 00:00:00.0";
// check if date is today or in the future
if ( time() <= strtotime($var) )
{
// This seems right, but if it's ONLY date you are after
// then the code might treat $var as past depending on
// the time.
}
উপরের কোডটি সঠিক বলে মনে হচ্ছে, তবে আপনি যদি কেবলমাত্র তারিখটি তুলনা করতে চান তবে উপরের কোডটি সঠিক যুক্তিযুক্ত নয়। কেন? কারণ, সময় () এবং স্ট্রোটোটাইম () এর মধ্যে টাইমস্ট্যাম্প অন্তর্ভুক্ত থাকবে। এটি হ'ল যদিও উভয় তারিখ একই দিনে পড়ে তবে সময় পার্থক্য বিবেচনা করবে। নীচের উদাহরণ বিবেচনা করুন:
// plain date string
$input = "2016-11-09";
কারণ ইনপুটটি সরল তারিখের স্ট্রিং, এটি ব্যবহার strtotime()
করে $input
ধরে নেওয়া হবে যে এটি 2016-11-09 এর মধ্যরাত। সুতরাং, time()
মধ্যরাতের পরে যে কোনও সময় চালানো $input
একই দিনে থাকলেও সর্বদা অতীত হিসাবে বিবেচিত হবে same
এটি ঠিক করার জন্য, আপনি এই জাতীয়ভাবে কোড করতে পারেন:
if (date("Y-m-d") <= $input)
{
echo "Input date is equal to or greater than today.";
}
কয়েক বছর পরে, আমি ববি জ্যাকের দ্বিতীয় পর্যবেক্ষণের দ্বিতীয় যে গত 24 ঘন্টা আজ নেই !!! এবং আমি অবাক হয়েছি যে উত্তরটি এতটা উপরে উঠেছিল ...
একটি নির্দিষ্ট তারিখের চেয়ে কম, সমান বা অন্যটির চেয়ে বেশি হলে তুলনা করতে প্রথমে আপনাকে সেগুলি দিনের শুরুতে "ডাউন" করা দরকার। অন্য কথায়, নিশ্চিত হয়ে নিন যে আপনি উভয় তারিখের একই সময় 00:00:00 সময়ের কথা বলছেন। এটি সহজ এবং মার্জিতভাবে হিসাবে করা যেতে পারে:
strtotime("today") <=> strtotime($var)
যদি $var
ওপিকে উল্লিখিত মত 00:00:00 সময় অংশ থাকে।
প্রতিস্থাপন করা <=>
আপনার যা প্রয়োজন তা দিয়ে (বা এটি পিএইচপি 7 এ রাখুন)
এছাড়াও, স্পষ্টতই, আমরা উভয়ের জন্য একই সময় অঞ্চল সম্পর্কে কথা বলছি। জন্য সমর্থিত সময়ের অঞ্চলগুলোকে তালিকা
$date1=date_create("2014-07-02");
$date2=date_create("2013-12-12");
$diff=date_diff($date1,$date2);
(w3 স্কুলগুলির উদাহরণ, এটি নিখুঁতভাবে কাজ করে)
ডাব্লু 3 স্কুল থেকে জোসুয়ার উত্তরটি প্রসারিত:
//create objects for the dates to compare
$date1=date_create($someDate);
$date2=date_create(date("Y-m-d"));
$diff=date_diff($date1,$date2);
//now convert the $diff object to type integer
$intDiff = $diff->format("%R%a");
$intDiff = intval($intDiff);
//now compare the two dates
if ($intDiff > 0) {echo '$date1 is in the past';}
else {echo 'date1 is today or in the future';}
আশা করি এটা কাজে লাগবে. স্ট্যাকওভারফ্লোতে আমার প্রথম পোস্ট!
তারিখের সময় অবজেক্টগুলির সাথে তুলনা করুন:
(আমি 10 দিন বাছাই করেছি - 10 দিনের চেয়ে পুরানো যে কোনও কিছুই হ'ল "ওল্ড", অন্যথায় "নতুন")
$now = new DateTime();
$diff=date_diff($yourdate,$now);
$diff_days = $diff->format("%a");
if($diff_days > 10){
echo "OLD! " . $yourdate->format('m/d/Y');
}else{
echo "NEW! " . $yourdate->format('m/d/Y');
}
কিছু দেওয়া উত্তর বর্তমান দিন বিবেচনা করা হয় না!
এই আমার প্রস্তাব।
$var = "2010-01-21 00:00:00.0"
$given_date = new \DateTime($var);
if ($given_date == new \DateTime('today')) {
//today
}
if ($given_date < new \DateTime('today')) {
//past
}
if ($given_date > new \DateTime('today')) {
//future
}
আপনি যদি সময় এবং তারিখের সাথে জিনিসগুলি করেন তবে কার্বন আপনি সেরা বন্ধু;
প্যাকেজটি ইনস্টল করুন:
$theDay = Carbon::make("2010-01-21 00:00:00.0");
$theDay->isToday();
$theDay->isPast();
$theDay->isFuture();
if($theDay->lt(Carbon::today()) || $theDay->gt(Carbon::today()))
lt = এর চেয়ে কম, জিটি = এর চেয়ে বড়
প্রশ্নে যেমন:
$theDay->gt(Carbon::today()) ? true : false;
এবং আরো অনেক কিছু;