2012-07-18 17 views
13

मुझे अपने डेटाबेस से आइटम्स की एक सूची मिल रही है, प्रत्येक में एक CURRENT_TIMESTAMP है जिसे मैंने timeago की सहायता से 'x मिनट पहले' में बदल दिया है। तो यह ठीक काम कर रहा है। लेकिन समस्या यह है कि मैं उन वस्तुओं पर "नया" बैनर भी चाहता हूं जो 30 मिनट से कम पुरानी हैं। मैं जनरेटेड टाइमस्टैम्प कैसे ले सकता हूं (उदाहरण के लिए: 2012-07-18 21:11:12) और कहें कि यह वर्तमान समय से 30 मिनट से कम है, फिर उस आइटम पर "नया" बैनर गूंजें।PHP जांचना कि टाइमस्टैम्प 30 मिनट से कम पुराना

+0

मुझे यह दिलचस्प लगता है कि कोई भी समय() - 30 * 60 का उपयोग करने का सुझाव नहीं देता है, आश्चर्य है कि क्या मैं अकेला हूं जो यूनिक्स टाइमस्टैम्प के साथ पूर्णांक के रूप में काम करता है। – Mahn

उत्तर

46

strtotime ("-30 मिनट") का उपयोग करें और फिर देखें कि आपकी पंक्ति का टाइमस्टैम्प उससे बड़ा है या नहीं।

उदाहरण:

<?php 
if(strtotime($mysql_timestamp) > strtotime("-30 minutes")) { 
$this_is_new = true; 
} 
?> 

मैं strtotime() यहाँ दो बार उपयोग कर रहा हूँ अपने mysql तारीख के लिए यूनिक्स टाइमस्टैम्प प्राप्त करने के लिए, और उसके बाद फिर क्या टाइमस्टैम्प 30 मिनट पहले किया गया था प्राप्त करने के लिए। यदि 30 मिनट पहले का टाइमस्टैम्प MySQL रिकॉर्ड के टाइमस्टैम्प से अधिक है, तो इसे 30 मिनट से अधिक समय तक बनाया जाना चाहिए।

+0

ब्रेवटी के लिए कोई अंक दिखाई नहीं देगा। –

+0

+1। धन्यवाद। यह जो मैं कर रहा हूं उससे ऐसा करने का यह एक बेहतर तरीका है। मैं वर्तमान में करता हूं: 'अगर ($ post_date <(time() - 600)) 'लेकिन' strtotime()' का उपयोग करके, लेकिन इसे सामान्य अंग्रेजी में डालना थोड़ा सा घटाने के लिए सेकंड की संख्या को खोजने से थोड़ा आसान है :) – Nathan

+0

@ user1511331 आपको यह जवाब स्वीकार करना चाहिए (देखें [उत्तर कार्य को कैसे स्वीकार किया जाता है?] (Http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235)) क्योंकि यह आपकी सहायता की। – Nathan

6

PHP के DateTime वस्तु का उपयोग कर, कुछ इस तरह का प्रयास करें:

$now = new DateTime(); 
$then = DateTime($timestamp); // "2012-07-18 21:11:12" for example 
$diff = $now->diff($then); 
$minutes = ($diff->format('%a') * 1440) + // total days converted to minutes 
      ($diff->format('%h') * 60) + // hours converted to minutes 
      $diff->format('%i');   // minutes 
if ($minutes <= 30) { 
    echo "NEW"; 
} 

संपादित करें: माइक सही है, मैं भूल गया था कि जो भी कारण के लिए, केवल %a वास्तव में (अपनी तरह का कुल इस मामले दिनों में रिटर्न)। अन्य सभी समय स्वरूपण प्रदर्शित करने के लिए हैं। मैंने उपरोक्त को वास्तव में काम करने के लिए बढ़ा दिया है।

+0

यह काम नहीं करेगा। यदि समय अंतर 1 घंटा 2 9 मिनट है, तो '$ diff-> प्रारूप (" i ")' 29 होगा। – Mike

+0

'$ अंतराल = नया दिनांक अंतराल ('PT1H29M'); echo $ interval-> प्रारूप ('% i मिनट'); 'echoes "2 9 मिनट" – Mike

+0

@ माइक मैं इसके बारे में भूल गया, और मुझे लगता है कि मुझे वास्तव में कोड का परीक्षण नहीं करने के लिए मिलता है। मैंने ** ** इस बार परीक्षण किया और यह अपेक्षित के रूप में काम करता है। =) – Crontab

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