2010-03-02 13 views
17

पर गोल PHP टाइमस्टैम्प मान लें कि मेरे पास PHP में एक यूनिक्स टाइमस्टैम्प है। मैं अपने PHP टाइमस्टैम्प को निकटतम मिनट में कैसे घुमा सकता हूं? जैसे 16:45:00 16:45:34 के विरोध में?निकटतम मिनट

आपकी मदद के लिए धन्यवाद! :)

+0

16:45:00 अभी भी सेकंड है ... मुझे लगता है कि आप का मतलब है कि आप सेकंड को हटाने के बजाय अगले निकटतम मिनट में जाना चाहते हैं। – Layke

+0

मैं सिर्फ PHP स्थापित कर रहा हूं इसलिए मैं आपको ऐसा करने के लिए कोड दे सकता हूं। मैं अनुमान नहीं लेना चाहता क्योंकि मुझे समय से नफरत है()। यदि कोई और नहीं है तो मैं 10 मिनट में जवाब दूंगा। – Layke

+4

@Laykes http://codepad.org/ त्वरित कोड चेक करने के लिए अच्छा है – Yacoby

उत्तर

49

तो टाइमस्टैम्प एक यूनिक्स शैली टाइमस्टैम्प है, बस

$rounded = round($time/60)*60; 

यदि यह शैली आपने इंगित किया है, तो आप बस वो यूनिक्स शैली टाइमस्टैम्प में बदल सकते हैं और वापस

$rounded = date('H:i:s', round(strtotime('16:45:34')/60)*60); 

round() के बीच x - 0.5 <= x < x + 0.5 के बीच के मानों के लिए इसे सुनिश्चित करने के एक सरल तरीके के रूप में उपयोग किया जाता है। आप हमेशा (संकेत दिया) की तरह हमेशा नीचे पूर्णांक बनाना चाहते हैं तो आप floor() या सापेक्ष समारोह

$rounded = floor($time/60)*60; 
//or 
$rounded = time() - time() % 60; 
+0

याकोबी, व्यापक स्पष्टीकरण के लिए धन्यवाद! अब जब आपने इसका उल्लेख किया है, तो दौर() वह कार्य है जिसे मैं पसंद करता हूं। मेरे आवेदन में और अधिक समझ में आता है। :) – Lyon

2

आह बांध इस्तेमाल कर सकते हैं। मुझे इसे मारो :)

यह मेरा समाधान भी था।

$t = time(); 
$t -= $t % 60; 
echo $t; 

मैं पढ़ा है कि PHP में time() करने के लिए प्रत्येक कॉल स्टैक के माध्यम से सभी तरह से वापस ओएस जाना पड़ा:

<?php 
$round = (round (time()/60) * 60); 

echo date('h:i:s A', $round); 
?> 

http://php.net/manual/en/function.time.php

+0

हे, मैं वास्तव में आपकी मदद की सराहना करता हूं! धन्यवाद :) – Lyon

6

एक वैकल्पिक यह है। मुझे नहीं पता कि यह 5.3+ में बदल गया है या नहीं? उपरोक्त कोड समय() के लिए कॉल कम कर देता है ...

बेंचमार्क कोड:

$ php -r '$s = microtime(TRUE); for ($i = 0; $i < 10000000; $i++); $t = time(); $t -= $t %60; $e = microtime(TRUE); echo $e - $s . "\n\n";' 

$ php -r '$s = microtime(TRUE); for ($i = 0; $i < 10000000; $i++); $t = time() - time() % 60; $e = microtime(TRUE); echo $e - $s . "\n\n";' 

$ php -r '$s = microtime(TRUE); for ($i = 0; $i < 10000000; $i++); $t = floor(time()/60) * 60; $e = microtime(TRUE); echo $e - $s . "\n\n";' 

दिलचस्प है, 10000000 से अधिक itterations सभी तीन वास्तव में एक ही समय करते हैं;)