2010-10-06 19 views

उत्तर

5
if(date('m-d') == substr($birthday,5,5)) 

को जोड़ने के लिए क्या टिम ने कहा:

if(date('m-d') == substr($birthday,5,5) or (date('y')%4 <> 0 and substr($birthday,5,5)=='02-29' and date('m-d')=='02-28')) 
+5

तुम भी 2004/02/29 पर टेड के जन्मदिन के लिए अनुमति चाहिए - 2011 में, वह 02-28 पर अपने जन्मदिन का जश्न मनाने जाएगा। –

+0

अच्छा सोचा समय, यह कैसे किया जा सकता है? – Johnson

+0

धन्यवाद टिम। मैंने जवाब में बदल दिया है। – CristiC

10

इस उत्तर चाहिए काम है, लेकिन यह अपने डेटाबेस का दिनांक स्वरूप यह पता लगाने के लिए सक्षम होने strtotime पर निर्भर करता है:

$birthDate = '1999-02-26'; // Read this from the DB instead 
$time = strtotime($birthDate); 
if(date('m-d') == date('m-d', $time)) { 
    // They're the same! 
} 
+0

_Should_ इस जटिल दुनिया में पर्याप्त नहीं है। उन तारीखों और समय की गणना हमेशा अलग किनारों और घटनाओं पर छिपी हुई कठिनाइयों का सामना करती है। 2 9 फरवरी को पैदा हुए किसी के लिए जन्मदिन की जांच करना बहुत मुश्किल है। और छलांग के वर्षों की जांच जटिल है। यह कुछ तैयार समाधान के लायक है। – Gherman

+0

@German Well, strtotime किसी तीसरे पक्ष द्वारा लिखा गया है ... संयोग से, मैंने देखा है कि जब मैंने यह लिखा था तो मैं गलती से स्ट्रेटीम के मैनुअल पेज से जुड़ा हुआ था ... जो एक अलग कार्य है। संयोग से, चूंकि यह उत्तर लिखा गया था, PHP में डेटटाइम ऑब्जेक्ट्स और संबंधित फ़ंक्शंस जोड़े गए थे। – Powerlord

0

PHP 5.2 से ऊपर:

if (substr($dateFromDb, -5) === date_create()->format('m-d')) { 
    // Happy birthday! 
} 
2
<?php 
/** 
* @param string $birthday Y-m-d 
* @param int $now 
* @return bool 
*/ 
function birthdayToday($birthday, $now = null) { 
    $birthday = substr($birthday, -5); 
    if ($now === null) { 
     $now = time(); 
    } 
    $today = date('m-d', $now); 
    return $birthday == $today || $birthday == '02-29' && $today == '02-28' && !checkdate(2, 29, date('Y', $now)); 
} 
संबंधित मुद्दे