2013-05-28 9 views
6

समस्यामुझे अगले सप्ताह की तिथियां कैसे मिल सकती हैं?

मैं अगले सप्ताह की तारीख और दूसरे सप्ताह की तारीख पाने के लिए नीचे दिए गए कोड का उपयोग कर रहा हूँ। यह पहले कुछ रिकॉर्ड के लिए ठीक काम करता है लेकिन बाद में यह वर्ष देने लगता है।

तो आरंभ तिथि 2013/12/01 है यह मेरे coorect नतीजा यह है कि है पता चलता है:

अगले सप्ताह: 19/01/2013

दूसरा सप्ताह: 26/01/2013

लेकिन एक और रिकार्ड जहां तिथि है में 16/05/2013 यह

नीचे से पता चलता

अगले सप्ताह: 08/01/1970

दूसरा सप्ताह: 15/01/1970

कृपया मुझे गाइड मैं कहाँ गलत हो रहा हो सकता है?

कोड

//Date of when game started 
    $starts_on = '12/01/2013';  

    //Next week's date from start date 
    $next_week = strtotime(date("d/m/Y", strtotime($starts_on)) . "+1 week"); 
    $next_week = date('d/m/Y', $next_week); 

    //Second week's date from start date 
    $second_week = strtotime(date("d/m/Y", strtotime($starts_on)) . "+2 week"); 
    $second_week = date('d/m/Y', $second_week); 

    echo $starts_on.", ".$next_week.", ".$second_week; 
+1

आप की जाँच की थी और यदि '$ starts_on' हर सही दिनांक होते हैं यह लिया गया है? –

+0

हाँ यह करता है! दूसरे रिकॉर्ड में जब भविष्य की तिथियां गलत हो रही हैं, तो start_on दिनांक ** 16/05/2013 ** – colourtheweb

+0

मैं सिर्फ रहस्य में जोड़ना चाहता हूं: '13/05/2012 'काम नहीं करता है लेकिन '12/05/2012 'होगा। ऐसा लगता है कि तिथि '12' से अधिक है, तो हमें कोई समस्या है। – andre

उत्तर

5

तुम गलत प्रारूप दिनांक का उपयोग कर रहे हैं। strtotime documentation में टिप्पणी की जाँच करें: मीटर में

तिथियां/दि/व या DMY प्रारूपों विभिन्न घटकों के बीच विभाजक को देखकर disambiguated कर रहे हैं: यदि विभाजक एक स्लैश (/), तो अमेरिकी मीटर है/डी/वाई माना जाता है; जबकि अगर विभाजक एक डैश (-) या एक बिंदु (।) है, तो यूरोपीय डी-एम-वाई प्रारूप माना जाता है।

चेक प्रलेखन आगे:

गणितीय क्रियाओं के लिए इस समारोह का उपयोग करना उचित नहीं है। PHP 5.3 में DateTime::add() और DateTime::sub() का उपयोग करना बेहतर है और बाद में, या DateTime::modify() PHP 5.2 में उपयोग करना बेहतर है।

4

मैं तुम्हें दिनांक समय वस्तु का उपयोग की सलाह देते हैं, दिनांक हेरफेर करने के लिए (जोड़ सकते हैं और घटाना तिथियों के लिए दूसरे से वस्तु DateInterval साथ बहुत आसान है) बेहतर है

<?php 
    $date = new DateTime("2013-01-12"); 
    //add one week to date 
    echo $date->add(new DateInterval('P1W'))->format('Y-m-d'); 
    //add one week to date 
    echo $date->add(new DateInterval('P1W'))->format('Y-m-d'); 
?> 

परिणाम:

2013-01-19 
2013-01-26 

संदर्भ:

http://php.net/manual/es/class.datetime.php

http://php.net/manual/es/class.dateinterval.php

0

का प्रयास करें इस

$dt = new DateTime(); 
// create DateTime object with current time 
$dt->setISODate($dt->format('o'), $dt->format('W')+1); 
// set object to Monday on next week 
$periods = new DatePeriod($dt, new DateInterval('P1D'), 6); 
// get all 1day periods from Monday to +6 days 

$days = iterator_to_array($periods); 
// convert DatePeriod object to array 
echo "<pre>"; 
print_r($days); 
संबंधित मुद्दे