$ तारीख + 1 वर्ष?


91

मैं एक तिथि प्राप्त करने की कोशिश कर रहा हूं जो मेरे द्वारा निर्दिष्ट तिथि से एक वर्ष है।

मेरा कोड इस तरह दिखता है:

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

यह गलत तारीख लौटा रहा है। कोई विचार क्यों?


9
आप त्रुटि के बारे में बताना भूल गए।
बालूसी

फ्रैंक किसान: क्या आप इतने निश्चित हैं? मैं इसके बजाय ओपी की टिप्पणियों / टिप्पणियों की प्रतीक्षा करूंगा।
बालुसक

कल रात यह पोस्ट करने की जल्दबाजी में मैं स्पष्ट करना भूल गया - यह गलत तारीख थी। माफ़ करना! आपकी सहायता के लिए धन्यवाद।
मैट

1
स्ट्रैटोटाइम ('+ 1 वर्ष', $ startDate) के बजाय इसे इस तरह उपयोग करें;
कैसैवागस्टिन

जवाबों:


98

आज की तारीख में एक वर्ष जोड़ने के लिए निम्नलिखित का उपयोग करें:

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

अन्य उदाहरणों के लिए आपको $ शुरुआती शुरू करना चाहिए उदाहरण के लिए टाइमस्टैम्प मूल्य के साथ:

$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"));

"+1 वर्ष" के बजाय "+365" को जोड़ना। धन्यवाद!
मैट

17
क्या यह लीप ईयर की स्थिति में नहीं होगा?
जेरेमी 1026

1
PHP 5.1 के रूप में, जब कोई तर्क नहीं दिया जाता है, mktime () एक E_STRICT नोटिस फेंकता है: इसके बजाय समय () फ़ंक्शन का उपयोग करें।
13 दिसंबर को svandragt

यहां भी डाउनवोट किया गया। दिन में सेकंड की संख्या, साल में दिन, साल में सेकंड इत्यादि सभी चर होते हैं। यदि आप 'अभी से एक वर्ष' में रुचि रखते हैं, तो आपको 'एक वर्ष' के अंतराल में पास होना होगा। अपने आप में उपविभाजित करने से छलांग के दिनों और लीप सेकंड और दिन के उजाले बचत परिवर्तन के आसपास त्रुटियों की ओर जाता है। इससे भी बदतर, यह flappy इकाई परीक्षणों का कारण बनता है।
ड्रबर्ट

क्यों मेरा जवाब नीचा है ?? $ addedoneyear = तिथि ( "y") + 1; // एक वर्ष जोड़ने के लिए इसके साथ क्या गलत है?
pathe.kiran

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

$ FutureDate अभी से एक वर्ष है!

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

$ FutureDate $ startDate से एक वर्ष है!


कृपया ध्यान दें कि यदि $ startDate पहले से ही टाइमस्टैम्प है (जैसे कि समय के साथ पहले बनाया गया) (या mktime () फ़ंक्शन) और स्ट्रिंग नहीं है, तो आपको इसे स्ट्रेटोटाइम में नहीं लपेटना चाहिए या यह काम नहीं करेगा। इसके बजाय, $futureDate=date('Y-m-d',strtotime('+1 year',$startDate));नीचे दिए गए K Prime के रूप में करें।
dallin

9

प्रयत्न: $futureDate=date('Y-m-d',strtotime('+1 year',$startDate));


जबकि वह सही उत्तर लौटाता है, दूसरा वास्तव में त्रुटि नहीं देता है ... सिर्फ गलत तारीख।
सीनजा

1
strtotime त्रुटियों को नहीं फेंकता है। यह त्रुटि के मामले में गलत है।
फ्रैंक किसान

यदि डिफ़ॉल्ट
टाइमज़ोन

मुझे आपके कोड में त्रुटि हो रही थी जिसे मैंने बदल ,दिया .और यह काम कर गया 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

मुझे OO दृष्टिकोण पसंद है:

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

DateTimeImmutableअन्यथा उपयोग करें आप मूल तिथि को भी संशोधित करेंगे! DateTimeImmutable पर अधिक: http://php.net/manual/en/class.datetimeimmutable.php


यदि आप केवल आज की तारीख से चाहते हैं तो आप हमेशा ऐसा कर सकते हैं:

new \DateTimeImmutable('-1 Month');

3

यदि आप PHP 5.3 का उपयोग कर रहे हैं, तो यह इसलिए है क्योंकि आपको डिफ़ॉल्ट समय क्षेत्र सेट करने की आवश्यकता है:

date_default_timezone_set()

3

strtotime()लौट रहा है bool(false), क्योंकि यह स्ट्रिंग को पार्स नहीं कर सकता '+one year'(यह "एक" नहीं समझता है)। falseइसके बाद integerटाइमस्टैम्प को स्पष्ट रूप से डाला जा रहा है 0। यह सत्यापित करने के लिए एक अच्छा विचार है कि strtotime()आउटपुट नहीं हैbool(false) अन्य कार्यों में रखने से पहले आप ।

डॉक्स से:

वापसी मान

सफलता पर एक टाइमस्टैम्प लौटाता है, अन्यथा FALSE। PHP 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"));

गार्डनी, ट्रेबी और डैनियल लीमा के लिए: 29 फरवरी के साथ क्या होगा? कभी-कभी फरवरी में केवल 28 दिन होते हैं :)

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