$ তারিখ + 1 বছর?


91

আমি যে তারিখটি নির্দিষ্ট করেছিলাম তার এক বছর পরের তারিখটি পাওয়ার চেষ্টা করছি।

আমার কোডটি এর মতো দেখাচ্ছে:

$futureDate=date('Y-m-d', strtotime('+one year', $startDate));

এটি ভুল তারিখটি ফিরিয়ে দিচ্ছে। কোন ধারণা কেন?


9
আপনি ত্রুটি সম্পর্কে বলতে ভুলে গেছেন।
বালাসসি

ফ্র্যাঙ্ক ফার্মার: আপনি কি নিশ্চিত? আমি বরং ওপি'র সংশোধন / মন্তব্যের জন্য অপেক্ষা করব।
বালাসিসি

গত রাতে এই পোস্ট করার জন্য আমার তাড়াহুড়োয় আমি স্পষ্ট করে বলতে ভুলে গিয়েছিলাম - এটি ভুল তারিখটি ফিরিয়ে দিচ্ছিল। দুঃখিত! আপনার সাহায্যের জন্য ধন্যবাদ.
ম্যাট

4
পরিবর্তে স্ট্রোটোটাইম ('+ 1 বছর', $ স্টার্টডেট)) এর মতো এটি ব্যবহার করুন;
ক্যাসিভাগাস্টিন

উত্তর:


98

আজকের তারিখে এক বছর যুক্ত করতে নিম্নলিখিতগুলি ব্যবহার করুন:

$oneYearOn = date('Y-m-d',strtotime(date("Y-m-d", mktime()) . " + 365 day"));

অন্যান্য উদাহরণের জন্য আপনাকে আরম্ভ করতে হবে example টাইমস্ট্যাম্প মান সহ স্টার্টিংডেট উদাহরণস্বরূপ:

$StartingDate = mktime();  // todays date as a timestamp

এটা চেষ্টা কর

$newEndingDate = date("Y-m-d", strtotime(date("Y-m-d", strtotime($StaringDate)) . " + 365 day"));

বা

$newEndingDate = date("Y-m-d", strtotime(date("Y-m-d", strtotime($StaringDate)) . " + 1 year"));

"+165" এর পরিবর্তে "+365" যুক্ত করা এটি করেছে। ধন্যবাদ!
ম্যাট

17
লিপ ইয়ারের ইভেন্টে কি এই ব্রেক হবে না?
জেরেমি 1026

4
পিএইচপি 5.1 হিসাবে, যখন কোনও যুক্তি ছাড়াই কল করা হয়, এমকিটাইম () একটি E_STRICT নোটিশ দেয়: পরিবর্তে সময় () ফাংশনটি ব্যবহার করুন।
সোভানড্রাগ্ট

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

আমার উত্তরটি কেন নিম্নমানের ?? $ addoneyear = তারিখ ("y") + 1; // এক বছর যোগ করার জন্য এতে কী দোষ আছে?
pathe.kiran

215
$futureDate=date('Y-m-d', strtotime('+1 year'));

$ ভবিষ্যতের তারিখ এখন থেকে এক বছর!

$futureDate=date('Y-m-d', strtotime('+1 year', strtotime($startDate)) );

$ ভবিষ্যতের তারিখ স্টার্টডেট থেকে এক বছর!


দয়া করে মনে রাখবেন যে যদি $ স্টার্টডেটটি ইতিমধ্যে টাইমস্ট্যাম্প (যেমন একটি সময় () বা এমকিটাইম () ফাংশন দিয়ে তৈরি করা হয়েছে) এবং স্ট্রিং নয়, আপনার এটি স্ট্রোটাইমে মুড়ে রাখা উচিত নয় বা এটি কাজ করবে না। পরিবর্তে, $futureDate=date('Y-m-d',strtotime('+1 year',$startDate));নীচে উল্লিখিত কে প্রাইম হিসাবে করুন।
ডালিন

9

চেষ্টা করুন: $futureDate=date('Y-m-d',strtotime('+1 year',$startDate));


যদিও এটি সঠিক উত্তরটি দেয়, অন্যটি আসলে কোনও ত্রুটি দেয় না ... ঠিক ভুল তারিখ।
সানজেএ

4
স্ট্রোটটাইম ত্রুটি ছুঁড়ে না। এটি একটি ত্রুটির ক্ষেত্রে মিথ্যা ফিরিয়ে দেয়।
ফ্রাঙ্ক কৃষক

ডিফল্ট টাইমজোন সেট না করা থাকলে পিএইচপি সতর্কতা নিক্ষেপ করবে ... যদিও স্পষ্টতই সে বোঝাতে
চাইছিল

আমি তোমার কোডের উপর ত্রুটি পেয়ে ছিল আমি পরিবর্তন ,করতে .এবং এটা কাজ date("Y-m-d",strtotime('+1 year '.$startDate));
মুহাম্মদ বিলাল

7
// Declare a variable for this year 
$this_year = date("Y");
// Add 1 to the variable
$next_year = $this_year + 1;
$year_after = $this_year + 2;

// Check your code
    echo "This year is ";
    echo $this_year;
    echo "<br />";
    echo "Next year is ";
    echo $next_year;
    echo "<br />";
    echo "The year after that is ";
    echo $year_after;

6

ঠিক একই সমস্যা ছিল, তবে এটি ছিল সহজ সমাধান:

<?php (date('Y')+1).date('-m-d'); ?>

গ্রেট, আমি আগামী বছরের পেতে এটি ব্যবহার: $next_year = (date('Y')+1)
মার্টিন

5
//1 year from today's date
echo date('d-m-Y', strtotime('+1 year'));

//1 year from from specific date
echo date('22-09-Y', strtotime('+1 year'));

আশা করি এই সহজ বিটটি ভবিষ্যতে কাউকে সহায়তা করবে :)


4

আমি ওও পদ্ধতির পছন্দ করি:

$date = new \DateTimeImmutable('today'); //'today' gives midnight, leave blank for current time.
$futureDate = $date->add(\DateInterval::createFromDateString('+1 Year'))

DateTimeImmutableঅন্যথায় ব্যবহার করুন আপনিও আসল তারিখটি সংশোধন করবেন! ডেটটাইমআইমুটেবল আরও: http://php.net/manual/en/class.datetimeimmutable.php


আপনি যদি কেবল আজকের তারিখ থেকে চান তবে আপনি সর্বদা এটি করতে পারেন:

new \DateTimeImmutable('-1 Month');

3

আপনি যদি পিএইচপি 5.3 ব্যবহার করছেন তবে এটি আপনাকে ডিফল্ট সময় অঞ্চল নির্ধারণ করতে হবে:

date_default_timezone_set()

3

strtotime()ফিরে আসছে bool(false), কারণ এটি স্ট্রিংকে বিশ্লেষণ করতে পারে না '+one year'(এটি "এক" বোঝে না)। falseতারপরে স্পষ্টভাবে integerটাইমস্ট্যাম্পে কাস্ট করা হচ্ছে 0। আপনি অন্যান্য ফাংশনগুলিতে ঝাঁকুনির আগে এটির strtotime()আউটপুট না হয় তা যাচাই করা ভাল ধারণা bool(false)

ডক্স থেকে:

রিটার্ন মান

সাফল্যের জন্য একটি টাইমস্ট্যাম্প ফিরিয়ে দেয়, অন্যথায় মিথ্যা। পিএইচপি 5.1.0 এর আগে, এই ফাংশনটি ব্যর্থতার পরে -1 আসবে।


হ্যাঁ, ভাল পয়েন্ট। আমার প্রোডাকশন কোডটিতে এটি থাকবে তবে আমি এটির কাজটি করার চেষ্টা করে আমার চুল ছিঁড়ে ফেলছিলাম, তাই এটি যতটা সম্ভব কম কোডে সরিয়ে ফেলুন। ধন্যবাদ!
ম্যাট

2

এটা চেষ্টা কর

$nextyear  = date("M d,Y",mktime(0, 0, 0, date("m",strtotime($startDate)),   date("d",strtotime($startDate)),   date("Y",strtotime($startDate))+1));

1

একটি সহজ এবং কম পরিশীলিত সমাধানও রয়েছে:

$monthDay = date('m/d');
$year = date('Y')+1;
$oneYearFuture = "".$monthDay."/".$year."";
echo"The date one year in the future is: ".$oneYearFuture."";

1

আমার সমাধানটি হ'ল: date('Y-m-d', time()-60*60*24*365);

আপনি এটিকে সংজ্ঞায়িত করে আরও "পঠনযোগ্য" করতে পারেন:

define('ONE_SECOND', 1);
define('ONE_MINUTE', 60 * ONE_SECOND);
define('ONE_HOUR',   60 * ONE_MINUTE);
define('ONE_DAY',    24 * ONE_HOUR);
define('ONE_YEAR',  365 * ONE_DAY);

date('Y-m-d', time()-ONE_YEAR);

-1

আমার ক্ষেত্রে (আমি বর্তমান তারিখে 3 বছর যোগ করতে চাই) সমাধানটি ছিল:

$future_date = date('Y-m-d', strtotime("now + 3 years"));

গার্দিনি, ট্রবি এবং ড্যানিয়েল লিমার কাছে: ২৯ শে ফেব্রুয়ারী কী হবে? কখনও কখনও ফেব্রুয়ারির শুধুমাত্র 28 দিন থাকে :)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.