2012-06-27 15 views
9

मैं एक कोड है, जहां मैं करने के लिए सबसे कम मिनट के लिए "दौर" होता है।Php: DATETIME: केवल कुछ सेकंड (नहीं घंटे न मिनट) स्थापित करने के लिए कैसे

  • 16:05:00 हो जाना चाहिए 16:05:00
  • 16:05:01 हो जाना चाहिए 16:05:00
  • 16:05:29 बन 16:05:00
  • 16:05:30 हो जाना चाहिए चाहिए 16:05:00
  • 16:05:3116:05:00
  • 16:05:59 हो जाना चाहिए 16:05:00

मैं डेटटाइम ऑब्जेक्ट का उपयोग करना चाहता हूं।

$my_date=DateTime::createFromFormat(
    'Y-m-d H:i:s', 
    $bd_date 
); 
$my_date->setTimezone(self::$TimeZone); 

अब मैं स्थापित करने के लिए करना चाहते हैं:

  • setHours()
  • setMinutes()
  • setSeconds()

यहाँ मेरी कोड की शुरुआत है: जैसे कोई प्रकार्य हैं शून्य में "सेकेंड" भाग।

आप केवल कुछ मिनट तरह से मैं करना चाहते हैं की स्थापना की एक सुंदर तरीका है?

नोटा: मैं की तरह एक समाधान के लिए नहीं देख रहा हूँ "getTime() द्वारा विभाजित 60 से, 60 से पूर्णांक, तो गुणा कन्वर्ट"। मैं सेकंड को सेट करने के लिए एक सामान्य समाधान की तलाश में हूं, न कि केवल "0" तक।

उत्तर

20

setTime सुरुचिपूर्ण है?

$my_date->setTime ($my_date->format("H"), $my_date->format("i"), $new_second_val); 
$my_date->setTime ($my_date->format("H"), $new_minute_val, $new_second_val); 
// etc... 
+0

बिल्कुल सही समाधान सेट;) –

+0

... और बहुत ही कुशल लगता है;) – Chuck

+0

यह एक DATETIME को घंटे और मिनट में सेट करने के लिए सबसे कारगर तरीका है वस्तु। साथ ही, 'प्रारूप' डेटटाइम से घंटों को निकालने का एकमात्र दस्तावेज तरीका है। – wroniasty

6

बस सेकंड के लिए "00"

date_default_timezone_set('America/Sao_paulo'); 
$date = new DateTime(); 
echo $date->format('Y-m-d H:i:00'); 
+0

मैंने कोशिश की लेकिन यह काम नहीं करता है ... किसी ऑब्जेक्ट की बजाय झूठी रिटर्न देता है। –

+0

यह काम नहीं करता है, अगर आप createFromFormat() का उपयोग करते हैं, क्योंकि दिया गया मान 2017-02-15 15:10:20 है। तो सेकंड को पार्स नहीं किया जाता है और फ़ंक्शन को डेटटाइम ऑब्जेक्ट –

+0

वापस नहीं लौटाता है, मैंने अभी createFromFormat() के साथ परीक्षण किया है और यह काम करता है –

संबंधित मुद्दे