PHP में $ Date के दिनों को जोड़ना


216

मेरे पास फॉर्म में एक mySQL क्वेरी के भाग के रूप में एक तारीख है 2010-09-17

मैं वेरिएबल्स $ Date2 से $ Date5 को इस प्रकार सेट करना चाहूंगा:

$Date2 = $Date + 1

$Date3 = $Date + 2

आदि..

ताकि यह वापस आ जाए 2010-09-18, 2010-09-19आदि ...

मैंने कोशिश की है

date('Y-m-d', strtotime($Date. ' + 1 day'))

लेकिन यह मुझे तारीख से पहले देता है $Date

फॉर्मेट फॉर्म 'Ymd' में मेरे डेट्स प्राप्त करने का सही तरीका क्या है ताकि उनका उपयोग दूसरी क्वेरी में किया जा सके?


जवाबों:


447

आपको बस इतना करना है इस्तेमाल होता है daysबजाय dayइस तरह:

<?php
$Date = "2010-09-17";
echo date('Y-m-d', strtotime($Date. ' + 1 days'));
echo date('Y-m-d', strtotime($Date. ' + 2 days'));
?>

और यह सही ढंग से आउटपुट:

2010-09-18
2010-09-19

7
यह सही dayरूप में अच्छी तरह से ... date("Y-m-d", strtotime('2010-09-17 + 1 day'))-> 2010-09-18, date("Y-m-d", strtotime('2010-09-17 + 2 day'))->2010-09-19
डैनियल Vandersluis

बस इस तरह से कोशिश की और यह काम किया। मुझे अभी भी पता नहीं है कि मुझे अपनी शुरुआत की तारीख से एक दिन पहले एक मूल्य क्यों मिला जब मैंने शुरू में कोशिश की थी।
इस्तरी

क्या होगा अगर मेरे पास जोड़ने के लिए कई दिनों के लिए एक चर है?
कार्लोस मार्टिंस

3
@ कर्नलो इको डेट ("Ymd", स्ट्रटोटाइम ($ दिनांक। '+' $ ​​चर। 'दिन'));
प्रदीप कुमार प्रभारण

नहीं, यह विधि बिल्कुल काम नहीं करती है। यह 2004 की कुछ तारीखों को लौटा रहा है।
gegobyte

81

यदि आप PHP 5.3 का उपयोग कर रहे हैं, तो आप किसी DateTimeऑब्जेक्ट और उसकी addविधि का उपयोग कर सकते हैं :

$Date1 = '2010-09-17';
$date = new DateTime($Date1);
$date->add(new DateInterval('P1D')); // P1D means a period of 1 day
$Date2 = $date->format('Y-m-d');

DateIntervalकंस्ट्रक्टर मैनुअल पेज पर एक नज़र डालें कि कैसे अपनी अवधि को जोड़ने के लिए अन्य अवधियों का निर्माण किया जाए (2 दिन होगा 'P2D', 3 होगा 'P3D', और इसी तरह)।

PHP 5.3 के बिना, आपको अपने द्वारा किए strtotimeगए तरीके का उपयोग करने में सक्षम होना चाहिए (मैंने इसका परीक्षण किया है और यह 5.1.6 और 5.2.10 दोनों में काम करता है):

$Date1 = '2010-09-17';
$Date2 = date('Y-m-d', strtotime($Date1 . " + 1 day"));
// var_dump($Date2) returns "2010-09-18"

क्षमा करें डैनियल, लेकिन वेबसर्वर php 5.2.6 चलाता है, इसलिए यह काम नहीं करेगा
Istari

2
DateTime::constructstrtotimeदिनांक को पार्स करने के लिए समान तंत्र का उपयोग करता है , इसलिए आप वह भी कर सकते हैं new DateTime("+1 day $date")जिसके लिए 5.3 की आवश्यकता नहीं होगी
गॉर्डन

मेरा यह मतलब नहीं था, लेकिन किसी तरह मैंने १
स्टीवन

यह php 5.5+ के लिए वास्तविक उत्तर है
TheLegendaryCopyCoder

29

PHP 5.2 से आप डेटटाइम ऑब्जेक्ट के साथ संशोधित का उपयोग कर सकते हैं:

http://php.net/manual/en/datetime.modify.php

$Date1 = '2010-09-17';
$date = new DateTime($Date1);
$date->modify('+1 day');
$Date2 = $date->format('Y-m-d');

महीनों को जोड़ते समय सावधान रहें ... (कुछ हद तक, वर्ष)


स्वीकृत उत्तर केवल 15000+ दिनों के लिए उत्तर देता है, जहाँ यह उत्तर
25000+

आप इसे DateTimeImmutable () पर भी क्वेरी कर सकते हैं और आपको मूल को बदलने के जोखिम के बिना एक संशोधित प्रतिलिपि प्राप्त होती है।
ज़ावी मोंटेरो

17

दिनांक संशोधनों को प्रदर्शित करने के लिए यहां एक छोटा सा स्निपेट दिया गया है:

$date = date("Y-m-d");
//increment 2 days
$mod_date = strtotime($date."+ 2 days");
echo date("Y-m-d",$mod_date) . "\n";

//decrement 2 days
$mod_date = strtotime($date."- 2 days");
echo date("Y-m-d",$mod_date) . "\n";

//increment 1 month
$mod_date = strtotime($date."+ 1 months");
echo date("Y-m-d",$mod_date) . "\n";

//increment 1 year
$mod_date = strtotime($date."+ 1 years");
echo date("Y-m-d",$mod_date) . "\n";

क्या आप मेरे संबंधित (quesiton) [ stackoverflow.com/q/61421783/8919244] देख सकते हैं ?
फैसल

8

आप निम्न प्रारूप का भी उपयोग कर सकते हैं

strtotime("-3 days", time());
strtotime("+1 day", strtotime($date));

आप इस तरह से बदलाव कर सकते हैं:

strtotime("+1 day", strtotime("+1 year", strtotime($date)));

इस दृष्टिकोण और दूसरे उत्तरों में एक के बीच अंतर पर ध्यान दें: मूल्यों को समेटने के बजाय +1 dayऔर <timestamp>, आप टाइमस्टैम्प में दूसरे पैरामीटर के रूप में पास कर सकते हैं strtotime


5

दिनों की संख्या के लिए एक चर का उपयोग करना

$myDate = "2014-01-16";
$nDays = 16;
$newDate = strtotime($myDate . '+ '.$nDays.'days');
echo newDate('d/m/Y', $soma); //format new date 

5

यहां आपकी क्वेरी का सबसे सरल समाधान है

$date=date_create("2013-03-15"); // or your date string
date_add($date,date_interval_create_from_date_string("40 days"));// add number of days 
echo date_format($date,"Y-m-d"); //set date format of the result


0

सभी को कोड का उपयोग करना होगा:

$nday = time() + ( 24 * 60 * 60);    
echo 'Now:       '. date('Y-m-d') ."\n";    
echo 'Next Day: '. date('Y-m-d', $nday) ."\n";

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