तिथि में दिनों की संख्या जोड़ें


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

दिए गए पूर्णांक टाइमस्टैम्प या वर्तमान समय का उपयोग करते हुए दिए गए प्रारूप स्ट्रिंग के अनुसार एक स्ट्रिंग स्वरूपित करता है यदि कोई टाइमस्टैम्प नहीं दिया गया है।

के लिए मैनुअल पेज देखें

और उनके कार्य हस्ताक्षर।


मुझे लगता है कि यह उन मुद्दों का कारण होगा जब दिन के समय की बचत के समय और अन्य मज़ेदार कैलेंडर आइटम को पार करना होगा। यह संदर्भ पर निर्भर करता है। आपको यह सोचने की ज़रूरत है कि क्या आप 30 24 घंटे के ब्लॉक की तलाश कर रहे हैं, जो दिन के समय की बचत को पार करते समय आपको 11:00 बजे डाल सकता है।
जेजे रोहेर

1
@JJRohrer नहीं, यह नहीं होगा। strtotimeखाते में कॉन्फ़िगर किए गए समयक्षेत्र के लिए कोई डीएसटी लेगा। DST केवल एक मुद्दा है जब आप कुछ इस तरह से करते हैं ओपी: stackoverflow.com/questions/4066035
गॉर्डन

मुद्दा लेना। इस प्रश्न पर मैं आपके द्वारा संदर्भित प्रश्न के बारे में कुछ हल करने की कोशिश कर रहा हूं। मुझे उम्मीद है कि मेरी उपरोक्त टिप्पणी दूसरों को उनकी तारीख की गणना को गंभीरता से लेने के बारे में सोचने के साथ - इसके सभी अपवादों के बारे में भूल जाना आसान है।
जे जे रोहरर जूल

64

यह एक अच्छा हो सकता है

function addDayswithdate($date,$days){

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

}

4
उपरोक्त समाधान को एक पंक्ति में संकुचित किया जा सकता है और साथ ही यदि आपको त्वरित समाधान की आवश्यकता है और फ़ंक्शन नहीं बनाना चाहते हैं। प्रतिध्वनि तिथि ("यम", स्ट्रटोटाइम ("+ 12 दिन", स्ट्रेटोटाइम (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"));


यह विधि दिन के उजाले बचत समय को पार करती है। मुझे यकीन नहीं है कि अगर php अन्य समय के लिए खाता है, जैसे कि लीप सेकंड, लेकिन, आपकी आवश्यकताओं के आधार पर, आप शायद कैलेंडर समय के साथ काम करते हुए DateTime बनाम StrToTime का उपयोग कर रहे हैं।
जेजे रोहर

@chx यह समाधान और भी सावधानी से तारीख की अनुमति देता है; उदाहरण के लिए, नया डेटाइम ('2016-12-09 10:35:58'); यह एक डेटाबेस टाइमस्टैम्प से आ रहा है ...
mshaffer


10

आप इस तरह से भी जोड़ सकते हैं, यदि आप किसी विशिष्ट तिथि से 5 दिन चाहते हैं:

आपके पास इस तरह की तारीख के साथ एक चर है (एक इनपुट या DB या सिर्फ हार्ड कोडित से प्राप्त):

$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

ध्यान रखें, दिन के समय की बचत के कारण घड़ी का परिवर्तन आपको कुछ समस्याएं दे सकता है जब केवल दिनों की गणना की जा रही है।

यहाँ एक छोटा सा php फंक्शन है जो इस बात का ध्यान रखता है:

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

आप इसे टाइमपास में हेरफेर करके या स्ट्रेटोटाइम () का उपयोग करके कर सकते हैं । यहाँ strtotime का उपयोग करके एक उदाहरण दिया गया है।

$ डेटा ['बनाया'] = तारीख ('यम एच: मैं: एस', स्ट्रेटोटाइम ("+ 1 सप्ताह"));


6

आप strtotime () का उपयोग कर सकते हैं
$data['created'] = date('Y-m-d H:m:s', strtotime('+1 week'));


6

मुझे पता है कि यह एक पुराना सवाल है, लेकिन PHP <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

आप PHP में निर्मित DateTime वर्ग का उपयोग कर सकते हैं। इसकी एक विधि है, जिसे "ऐड" कहा जाता है, और इसका उपयोग कैसे किया जाता है यह पूरी तरह से मैनुअल में प्रदर्शित किया जाता है: http://www.php.net/manual/en/datetime.add.php

हालाँकि इसके लिए 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

दिनों, महीनों या वर्षों को जोड़ने या घटाने के लिए इस AddDate () फ़ंक्शन का उपयोग करें (आपको समान कार्य सुधारक की आवश्यकता होगी) () साथ ही)

/**
 * $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);
    }

नोट: केवल php> = 5.3 के लिए




1

भले ही यह एक पुराना सवाल है, लेकिन ऐसा करने का यह तरीका कई स्थितियों को लेगा और मजबूत होगा। आपको PHP 5.3.0 या इसके बाद के संस्करण की आवश्यकता है।

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

दिनांक स्ट्रिंग के लिए आपके पास किसी भी प्रकार का प्रारूप हो सकता है और यह काम करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.