PHP

2012-06-11 4 views
11

में डेट ऑब्जेक्ट के रूप में वर्तमान दिनांक/समय कैसे प्राप्त करें दिनांक दिनांक के रूप में आज की तारीख कैसे प्राप्त करें?PHP

मैं कुछ प्रारंभ तिथि और आज के बीच अंतर की गणना करने की कोशिश कर रहा हूं। निम्नलिखित काम नहीं करेगा, क्योंकि getdate() एक सरणी देता है और नहीं एक तारीख वस्तु:

$today = getdate();   
$start = date_create('06/20/2012'); 
$diff = date_diff($start, $today); 

echo($today . '<br/>' . $start . '<br/>' . $diff); 

आउटपुट:

Array ([seconds] => 8 [minutes] => 1 [hours] => 16 [mday] => 11 [wday] => 1 [mon] => 6 [year] => 2012 [yday] => 162 [weekday] => Monday [month] => June [0] => 1339455668)

DateTime Object ([date] => 2012-06-20 00:00:00 [timezone_type] => 3 [timezone] => America/Los_Angeles)

उत्तर

33
new DateTime('now'); 

http://www.php.net/manual/en/datetime.construct.php

मुकाबले आसान है:

$today = new DateTime('now'); 
$newYear = new DateTime('2012-01-01'); 

if ($today > $newYear) { 

} 

ओप का संपादन मुझे बस date_default_timezone_set पर कॉल करने की आवश्यकता है, और फिर यह कोड मेरे लिए काम करता है।

+3

मुझे लगता है कि स्पष्ट '$ आज = ​​नया डेटटाइम (" अब "); 'अधिक स्पष्ट है, भले ही तर्क" अब "के लिए डिफ़ॉल्ट हो। – jedwards

+0

कोड * $ आज = ​​नया डेटटाइम ('अब'); * वास्तव में किसी प्रकार की त्रुटि फेंक रहा है। (500 आंतरिक सर्वर त्रुटि) – McGarnagle

+1

@dbaseman क्या आप अधिक विशिष्ट हो सकते हैं? PHP का कौन सा संस्करण आप चल रहे हैं? http://codepad.org/5lYyo8MC –

0

मैं वर्तमान दिनांक प्राप्त करने के लिए date_create कन्स्ट्रक्टर (कोई पैरामीटर) का उपयोग करके समाप्त हुआ।

$diff = date_diff(date_create('06/20/2012'), date_create()); 
print_r($diff); 

आउटपुट:

DateInterval Object ([y] => 0 [m] => 0 [d] => 8 [h] => 6 [i] => 30 [s] => 40 [invert] => 1 [days] => 8)

मुझे पता नहीं क्यों, लेकिन माइक बी के जवाब (और किसी भी निर्माता मैं दिनांक समयके लिए करने की कोशिश की) PHP5/IIS में मेरे लिए एक त्रुटि फेंक दिया। दिनों में इस का उपयोग

+1

खुशी है कि आपको एक समाधान मिला। यदि आप जानना चाहते हैं कि 'डेटटाइम' तत्काल क्यों विफल रहा है तो आप त्रुटि रिपोर्टिंग को चालू करने का प्रयास कर सकते हैं। 500 त्रुटि आईआईएस का आपको यह बताने का तरीका है कि PHP बार्फ़ेड है लेकिन यह अधिक विशिष्ट नहीं है। आप इन स्क्रिप्ट को अपनी स्क्रिप्ट की शुरुआत में रखकर त्रुटि रिपोर्टिंग को क्रैंक कर सकते हैं: 'error_reporting (-1); ini_set ('display_errors', 1); ini_set ('display_startup_errors', 1); '। आईआईएस के त्रुटि लॉग में विशिष्ट त्रुटि संदेश भी हो सकते हैं। –

+0

@ माइकब धन्यवाद। यह त्रुटि थी: * सिस्टम की टाइमज़ोन सेटिंग्स पर भरोसा करना सुरक्षित नहीं है। आपको date.timezone सेटिंग या date_default_timezone_set() फ़ंक्शन का उपयोग करने की आवश्यकता है। * एक बार जब मैं * date_default_timezone_set * को कॉल करता हूं, तो आपका उत्तर काम करता है। – McGarnagle

10

अंतर पाने के लिए:

$today = new DateTime('today'); 

इस वस्तु में समय eill 00:00:00

हो तुम घंटे मिनट के साथ अंतर चाहते हैं और सेकंड इस का उपयोग करें:

$now = new DateTime('now'); 
संबंधित मुद्दे