2012-04-12 11 views
5

मैं कोड के इस टुकड़ेपीएचपी तारीख strtotime काम नहीं कर रहा

echo date("Y-m-d", strtotime($date, strtotime("+ " . $days . " days"))); 

$date = 2012-04-12 
$days = 15 

मैं तिथि (2012-04-12) मैं 2012-04-27 पाने के लिए उम्मीद कर रहा हूँ करने के लिए $days (15 दिन) को जोड़ने के लिए देख रहा हूँ लिखा था और इस कोड को मुझे 2012-04-12 देता है, मैं क्या गलत कर रहा हूं?

उत्तर

8
echo date('Y-m-d', strtotime('+15 days', strtotime('2012-04-12'))); 
+0

धन्यवाद, बस मैं जो देख रहा था :) – user979331

0

क्यों न केवल DateTime कक्षा का उपयोग करें?

$date = new DateTime(); 
$date->add(new DateInterval('P15D')); 
5

strtotime का प्रयोग न करें()। यह अविश्वसनीय है, यद्यपि आप वास्तव में कुछ भी नहीं कर रहे हैं जो वास्तव में आपको रैंप में काटने के लिए वापस आ जाएगा। लेकिन स्ट्रेटोटाइम के आधार पर अभी भी एक बुरी बात है, क्योंकि यह किसी भी समय आपके जीवन को दुखी कर देगा। बजाय

उपयोग DateTime:

$now = DateTime::CreateFromFormat('Y-m-d', '2012-04-12'); 
$then = $now->add(new DateInterval('P15D')); 
$date = $then->format('Y-m-d'); 
+6

'strtotime()' अविश्वसनीय नहीं है; वास्तव में, डेटटाइम कक्षा चादरों के नीचे इसका उपयोग करती है। –

+0

हाँ, अगर आप ऑटो-डिटेक्शन सामान हैं। लेकिन अगर आपके पास ज्ञात प्रारूप की तारीख है, तो स्ट्रेटोटाइम का उपयोग न करें। –

+2

मैं सैद्धांतिक रूप से आपके साथ सहमत हूं, मार्क, लेकिन मैं किसी वस्तु को तत्काल कुछ करने के लिए तत्काल करने की आवश्यकता पर सवाल उठाता हूं। यदि वह टाइमज़ोन परिवर्तन या अन्य उन्नत संचालन करने जा रहे थे, तो हाँ ऑब्जेक्ट का बिल्कुल उपयोग करें। बस कुछ दिनों को जोड़ने के लिए? भावहीन। –

2
$date = '2012-04-12'; 
$days = 15; 
echo date('Y-m-d', strtotime("$date +$days days")); 
1

आपका वाक्य रचना सही नहीं है। अपने कोड को एक पंक्ति पर रखने के लिए यह आवश्यक या सहायक भी नहीं है। इस मामले में, हम देखते हैं कि ऐसा करने की कोशिश सिंटैक्स समस्याओं का कारण बनती है। कुछ अतिरिक्त छोटे चर से डरो मत!

$date = '2012-04-12'; 
$days = 15; 

$ts = strtotime($date); 
$new_ts = strtotime('+'.$days.' days', $ts); 
$new_date = date('Y-m-d', $new_ts); 

साफ़, पढ़ने में आसान, डीबग करने में आसान। आप कोड गोल्फ पसंद है, तो आप इसे एक पंक्ति में रख सकते हैं, लेकिन वहाँ एक स्पष्ट जिस तरह से यह लिखने के लिए है:

$new_date = date (
    'Y-m-d', 
    strtotime (
     '+'.$days.' days', 
     strtotime($date) 
    ) 
); 

प्रलेखन