2012-07-08 14 views
42

घंटे की राशि मैं वर्तमान php इसलिए की तरह वर्तमान समय/तारीख मिल है:जोड़ें 'एक्स' तारीख

$now = date("Y-m-d H:m:s"); 

क्या आईडी करना पसंद एक नया वेरिएबल $new_time बराबर $now + $hours है। $hours 24-800 से कहीं भी घंटों की मात्रा होने के नाते।

कोई सुझाव?

+0

strtotime() http://php.net/manual/en/function.strtotime.php –

+2

मुझे शक अगर आप यही चाहते हैं। मैं चाहता हूं कि आप "एच: एम: एस" में "एम" को अंक पर महीने का प्रतिनिधित्व करते हैं। मेरा मानना ​​है कि आप "एच: आई: एस" लिखना चाहते थे। कृपया – Paullo

उत्तर

75

आप वर्तमान टाइमस्टैंप में कुछ जोड़ने के लिए strtotime() फ़ंक्शन जैसे कुछ का उपयोग कर सकते हैं। $new_time = date("Y-m-d H:i:s", strtotime('+5 hours'))

यदि आपको फ़ंक्शन में चर की आवश्यकता है, तो आपको strtotime("+{$hours} hours") जैसे डबल कोट्स का उपयोग करना होगा, हालांकि बेहतर है कि आप strtotime(sprintf("+%d hours", $hours)) का उपयोग करें।

+0

क्रॉस चेक करें, लेकिन यदि मैं एक चर के साथ '5' को प्रतिस्थापित करता हूं, तो यह ठीक से काम नहीं करता है। 'strtotime ('+ $ घंटे घंटे')' –

+0

मैंने उस उत्तर को अद्यतन किया जो आपकी मदद करनी चाहिए। – fdomig

+0

क्या आपका मतलब $ new_time = date ("वाई-एम-डी एच: आई: एस", स्ट्रेटोटाइम ('+ 5 घंटे')? मी महीना है, मैं मिनट है ... – richard

16

आप strtotime() उपयोग कर सकते हैं प्राप्त करने के लिए इस:

$new_time = date("Y-m-d H:i:s", strtotime('+3 hours', $now)); // $now + 3 hours 
+1

मिनटों के लिए एम का उपयोग करके इन उत्तरों के साथ क्या है ??? – richard

+0

@RichardDesLonde शायद क्योंकि सभी ने ओपी के कोड उदाहरण की प्रतिलिपि बनाई है। :-) – Zar

3

तुम भी यूनिक्स शैली समय का उपयोग गणना करने के लिए कर सकते हैं:

$newtime = time() + ($hours * 60 * 60); // hours; 60 mins; 60secs 
echo 'Now:  '. date('Y-m-d') ."\n"; 
echo 'Next Week: '. date('Y-m-d', $newtime) ."\n"; 
+0

खराब विचार, लीप वर्षों के साथ समस्याएं, लीप सेकंड, डेलाइट बचत समय इत्यादि –

+0

@ डैगन संख्या, यह ठीक से गणना करेगा। – casraf

+0

लीप वर्षों को इस विधि का उपयोग करने का ख्याल रखा जाता है, फिर से दिनांक का उपयोग करते समय डेलाइट सेविंग सेट किया जा सकता है – Ankit

4

उम ... अपने मिनट सही किया जाना चाहिए ... ' मैं मिनटों के लिए है। महीनों नहीं :) (मैं कुछ भी करने के लिए एक ही समस्या थी

$now = date("Y-m-d H:i:s"); 
$new_time = date("Y-m-d H:i:s", strtotime('+3 hours', $now)); // $now + 3 hours 
22

एक अन्य समाधान (वस्तु उन्मुख) :: जोड़ने दिनांक समय का उपयोग है

उदाहरण:।।

$now = new DateTime(); //current date/time 
$now->add(new DateInterval("PT{$hours}H")); 
$new_time = $now->format('Y-m-d H:i:s'); 

PHP documentation

+3

छोटा टाईप, $ date-> प्रारूप शायद $ अब-> प्रारूप होना चाहिए – Patrick

0

मैं सामान्य कार्य-समय मान को mysql डेटाटाइम प्रारूप में बदलने के लिए निम्न फ़ंक्शन का उपयोग करता हूं।

private function ampmtosql($ampmdate) { 
      if($ampmdate == '') 
       return ''; 
      $ampm = substr(trim(($ampmdate)), -2); 
      $datetimesql = substr(trim(($ampmdate)), 0, -3); 
      if ($ampm == 'pm') { 
       $hours = substr(trim($datetimesql), -5, 2); 
       if($hours != '12') 
        $datetimesql = date('Y-m-d H:i',strtotime('+12 hour',strtotime($datetimesql))); 
      } 
      elseif ($ampm == 'am') { 
       $hours = substr(trim($datetimesql), -5, 2); 
       if($hours == '12') 
        $datetimesql = date('Y-m-d H:i',strtotime('-12 hour',strtotime($datetimesql))); 
      } 
      return $datetimesql; 
     } 

ऐसा लगता है कि दिनांक मान बदल देता है,

2015-06-04 09:55 AM -> 2015-06-04 09:55 
2015-06-04 03:55 PM -> 2015-06-04 15:55 
2015-06-04 12:30 AM -> 2015-06-04 00:55 

आशा इस किसी की मदद करेंगे।

2

आप Ouzo goodies lib कोशिश कर सकते हैं, और धाराप्रवाह तरीके से इस कार्य करें:

echo Clock::now()->plusHours($hours)->format("Y-m-d H:m:s"); 

एपीआई कई आपरेशनों अनुमति देते हैं।

6

सही

आप इस लक्ष्य को हासिल करने के लिए strtotime() का उपयोग कर सकते हैं:

$new_time = date("Y-m-d H:i:s", strtotime('+3 hours', strtotime($now))); // $now + 3 hours 
संबंधित मुद्दे