একটি তারিখে দিন সংখ্যা যুক্ত করুন


124

আমি বর্তমান তারিখে দিন সংখ্যা যুক্ত করতে চাই: আমি নিম্নলিখিত কোড ব্যবহার করছি:

$i=30;
echo $date = strtotime(date("Y-m-d", strtotime($date)) . " +".$i."days");

তবে সঠিক তারিখের পরিবর্তে আমি এটি পাচ্ছি: 2592000

সুপারিশ করুন.




4
চারপাশে বন্ধনী সহ ট্যাগের নাম ব্যবহার করে অনুসন্ধান করুন, যেমন [php] [date] addঅনুসন্ধান বাক্সে। আপনি এই জাতীয় প্রশ্নের অনেক উত্তর পাবেন।
মাইকেল

উত্তর:


247

এই হওয়া উচিত

echo date('Y-m-d', strtotime("+30 days"));

strtotime

ইউএস ইংলিশ তারিখের ফর্ম্যাট সম্বলিত একটি স্ট্রিং দেওয়ার প্রত্যাশা রয়েছে এবং এখনই দেওয়া টাইমস্ট্যাম্পের তুলনায় ইউনিক্স টাইমস্ট্যাম্পে (জানুয়ারি 1 1970 00:00:00 ইউটিসি থেকে সেকেন্ডের সংখ্যা) এই বিন্যাসটিকে বিশ্লেষণ করার চেষ্টা করবে বা বর্তমান সময় যদি এখন সরবরাহ করা হয় না।

যখন date

প্রদত্ত পূর্ণসংখ্যা টাইমস্ট্যাম্প বা টাইমস্ট্যাম্প না দেওয়া থাকলে বর্তমান সময় ব্যবহার করে প্রদত্ত ফর্ম্যাট স্ট্রিং অনুসারে একটি স্ট্রিং ফর্ম্যাট দেয়।

এর জন্য ম্যানুয়াল পৃষ্ঠাগুলি দেখুন

এবং তাদের ফাংশন স্বাক্ষর।


আমি মনে করি দিবালোকের সময় সঞ্চয়ের সময় এবং অন্যান্য মজার ক্যালেন্ডার আইটেমগুলি অতিক্রম করার সময় এটি সমস্যার সৃষ্টি করবে। এটি প্রকারের উপর নির্ভর করে। আপনি যদি 24 24 ঘন্টা ব্লক সন্ধান করে থাকেন তবে আপনাকে ভাবতে হবে যা কোনও দিবালোকের সময় সঞ্চয়ের সময় পার করার সময় আপনাকে 11:00 pm এ বসতে পারে।
জেজে রোহার 16

1
@ জেজেআরহর না, এটি হবে না। strtotimeঅ্যাকাউন্টে কনফিগার করা টাইমজোনটির জন্য যে কোনও ডিএসটি নেবে। ডিএসটি কেবল তখনই ইস্যু হয় যখন আপনি এই ওপি এর মতো কিছু করেন: stackoverflow.com/questions/4066035
গর্ডন

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

64

এই এক ভাল হতে পারে

function addDayswithdate($date,$days){

    $date = strtotime("+".$days." days", strtotime($date));
    return  date("Y-m-d", $date);

}

4
দ্রুত সমাধানের প্রয়োজন হলে এবং কোনও ফাংশন তৈরি করতে না চাইলে উপরের দ্রবণটি এক লাইনে কমপ্যাক্ট করা যায়। প্রতিধ্বনি তারিখ ("Ymd", স্ট্রোটোটাইম ("+ 12days", স্ট্রোটোটাইম (20130101))
মায়াঙ্ক

46
$date = new DateTime();
$date->modify('+1 week');
print $date->format('Y-m-d H:i:s');

অথবা print date('Y-m-d H:i:s', mktime(date("H"), date("i"), date("s"), date("m"), date("d") + 7, date("Y"));


এই পদ্ধতিটি দিবালোকের সঞ্চয়ের সময়কে অতিক্রম করে। আমি নিশ্চিত নই যে পিএইচপি অন্যান্য সময় কীর্তির জন্য লিপ সেকেন্ডের মতো অ্যাকাউন্ট করে, তবে, আপনার প্রয়োজনের উপর নির্ভর করে আপনি ক্যালেন্ডারের দিনগুলি লেনদেন করলে ডেটটাইম বনাম স্ট্রোটোটাইম ব্যবহার করা ভাল।
জেজে রোহার 16

@chx এই সমাধানটি আরও সতর্কতার সাথে একটি তারিখের অনুমতি দেয়; যেমন, নতুন ডেটটাইম ('2016-12-09 10:35:58'); এটি একটি ডাটাবেস টাইমস্ট্যাম্প থেকে আসছে ...
মিশাফার


10

আপনি যদি একটি নির্দিষ্ট তারিখ থেকে 5 দিন তারিখটি চান তবে আপনি এটির মতোও যুক্ত করতে পারেন:

আপনার মত একটি তারিখের সাথে একটি পরিবর্তনশীল রয়েছে (একটি ইনপুট বা ডিবি থেকে পাওয়া বা কেবল শক্ত কোডড):

$today = "2015-06-15"; // Or can put $today = date ("Y-m-d");

$fiveDays = date ("Y-m-d", strtotime ($today ."+5 days"));

echo $fiveDays; // Will output 2015-06-20

7

মনে রাখবেন, দিবালোকের সময় সাশ্রয়ের কারণে ঘড়ির পরিবর্তন আপনাকে কেবল কিছু দিনগুলি গণনা করার সময় কিছু সমস্যা দিতে পারে।

এখানে একটি সামান্য পিএইচপি ফাংশন যা যত্ন নেয়:

function add_days($date, $days) {
    $timeStamp = strtotime(date('Y-m-d',$date));
    $timeStamp+= 24 * 60 * 60 * $days;

    // ...clock change....
    if (date("I",$timeStamp) != date("I",$date)) {
        if (date("I",$date)=="1") { 
            // summer to winter, add an hour
            $timeStamp+= 60 * 60; 
        } else {
            // summer to winter, deduct an hour
            $timeStamp-= 60 * 60;           
        } // if
    } // if
    $cur_dat = mktime(0, 0, 0, 
                      date("n", $timeStamp), 
                      date("j", $timeStamp), 
                      date("Y", $timeStamp)
                     ); 
    return $cur_dat;
}


6

আপনি টাইমকোডের কৌশল দ্বারা বা স্ট্রোটোটাইম () ব্যবহার করে এটি করতে পারেন । স্ট্রোটোটাইম ব্যবহার করে এখানে একটি উদাহরণ।

$ ডেটা ['তৈরি'] = তারিখ ('ইয়ামডি এইচ: আই: এস', স্ট্রোটোটাইম ("+ 1 সপ্তাহ"));


6

আপনি স্ট্রোটাইম () ব্যবহার করতে পারেন
$data['created'] = date('Y-m-d H:m:s', strtotime('+1 week'));


6

আমি জানি এটি একটি পুরানো প্রশ্ন, তবে পিএইচপি <5.3 এর জন্য আপনি এটি চেষ্টা করতে পারেন:

$date = '05/07/2013';
$add_days = 7;
$date = date('Y-m-d',strtotime($date) + (24*3600*$add_days)); //my preferred method
//or
$date = date('Y-m-d',strtotime($date.' +'.$add_days.' days');

5

আপনি পিএইচপি-তে নির্মিত ডেটটাইম ক্লাসটি ব্যবহার করতে পারেন। এটিতে "অ্যাড" নামে একটি পদ্ধতি রয়েছে এবং এটি কীভাবে ব্যবহৃত হয় তা ম্যানুয়ালটিতে পুরোপুরি প্রদর্শিত হয়: http://www.php.net/manual/en/datetime.add.php

তবে এটি পিএইচপি 5.3.0 প্রয়োজন।



4

আপনি এটি চেষ্টা করতে পারেন।

$i=30;
echo  date("Y-m-d",mktime(0,0,0,date('m'),date('d')+$i,date('Y')));

3

সহজ এবং সেরা

echo date('Y-m-d H:i:s')."\n";
echo "<br>";
echo date('Y-m-d H:i:s', mktime(date('H'),date('i'),date('s'), date('m'),date('d')+30,date('Y')))."\n";

এটা চেষ্টা কর



2

দিন, মাস বা বছর যোগ করতে বা বিয়োগ করতে এই অ্যাডডেট () ফাংশনটি ব্যবহার করুন (পাশাপাশি আপনাকে সহায়তার ফাংশনটির পুনরায় ফর্ম্যাটডেটও প্রয়োজন হবে))

/**
 * $date self explanatory
 * $diff the difference to add or subtract: e.g. '2 days' or '-1 month'
 * $format the format for $date
 **/
    function addDate($date = '', $diff = '', $format = "d/m/Y") {
        if (empty($date) || empty($diff))
            return false;
        $formatedDate = reformatDate($date, $format, $to_format = 'Y-m-d H:i:s');
        $newdate = strtotime($diff, strtotime($formatedDate));
        return date($format, $newdate);
    }
    //Aux function
    function reformatDate($date, $from_format = 'd/m/Y', $to_format = 'Y-m-d') {
        $date_aux = date_create_from_format($from_format, $date);
        return date_format($date_aux,$to_format);
    }

দ্রষ্টব্য: কেবল পিএইচপি> = 5.3 এর জন্য




1

যদিও এটি একটি পুরানো প্রশ্ন, এটি করার এই উপায়টি অনেক পরিস্থিতিতে লাগে এবং এটি দৃ rob় বলে মনে হয়। আপনার পিএইচপি 5.3.0 বা তার বেশি হওয়া দরকার।

$EndDateTime = DateTime::createFromFormat('d/m/Y', "16/07/2017");
$EndDateTime->modify('+6 days');
echo $EndDateTime->format('d/m/Y');

তারিখের স্ট্রিংয়ের জন্য আপনার কোনও ধরণের বিন্যাস থাকতে পারে এবং এটি কাজ করবে।

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