मेरे पास उपयोगकर्ता का जन्मदिन birthday
में 1999-02-26 के रूप में संग्रहीत है।PHP: जन्मदिन की जांच आज की तारीख
मैं कैसे देख सकता हूं कि जन्मदिन आज है या नहीं?
if(date('m-d') == ..?
मेरे पास उपयोगकर्ता का जन्मदिन birthday
में 1999-02-26 के रूप में संग्रहीत है।PHP: जन्मदिन की जांच आज की तारीख
मैं कैसे देख सकता हूं कि जन्मदिन आज है या नहीं?
if(date('m-d') == ..?
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'))
इस उत्तर चाहिए काम है, लेकिन यह अपने डेटाबेस का दिनांक स्वरूप यह पता लगाने के लिए सक्षम होने 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!
}
_Should_ इस जटिल दुनिया में पर्याप्त नहीं है। उन तारीखों और समय की गणना हमेशा अलग किनारों और घटनाओं पर छिपी हुई कठिनाइयों का सामना करती है। 2 9 फरवरी को पैदा हुए किसी के लिए जन्मदिन की जांच करना बहुत मुश्किल है। और छलांग के वर्षों की जांच जटिल है। यह कुछ तैयार समाधान के लायक है। – Gherman
@German Well, strtotime किसी तीसरे पक्ष द्वारा लिखा गया है ... संयोग से, मैंने देखा है कि जब मैंने यह लिखा था तो मैं गलती से स्ट्रेटीम के मैनुअल पेज से जुड़ा हुआ था ... जो एक अलग कार्य है। संयोग से, चूंकि यह उत्तर लिखा गया था, PHP में डेटटाइम ऑब्जेक्ट्स और संबंधित फ़ंक्शंस जोड़े गए थे। – Powerlord
PHP 5.2 से ऊपर:
if (substr($dateFromDb, -5) === date_create()->format('m-d')) {
// Happy birthday!
}
<?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));
}
तुम भी 2004/02/29 पर टेड के जन्मदिन के लिए अनुमति चाहिए - 2011 में, वह 02-28 पर अपने जन्मदिन का जश्न मनाने जाएगा। –
अच्छा सोचा समय, यह कैसे किया जा सकता है? – Johnson
धन्यवाद टिम। मैंने जवाब में बदल दिया है। – CristiC