PHP
डेट्स एंड टाइम के साथ काम करना
खोज…
वाक्य - विन्यास
- स्ट्रिंग दिनांक (स्ट्रिंग $ प्रारूप [, int $ टाइमस्टैम्प = समय ()])
- int स्ट्रेटोटाइम (स्ट्रिंग $ समय [, इंट $ अब])
दिनांक प्रारूप में अंग्रेजी तारीख का विवरण दें
date()
के साथ संयुक्त strtotime()
फ़ंक्शन का उपयोग करके आप तारीखों को विभिन्न अंग्रेजी पाठ विवरणों को पार्स कर सकते हैं:
// Gets the current date
echo date("m/d/Y", strtotime("now")), "\n"; // prints the current date
echo date("m/d/Y", strtotime("10 September 2000")), "\n"; // prints September 10, 2000 in the m/d/Y format
echo date("m/d/Y", strtotime("-1 day")), "\n"; // prints yesterday's date
echo date("m/d/Y", strtotime("+1 week")), "\n"; // prints the result of the current date + a week
echo date("m/d/Y", strtotime("+1 week 2 days 4 hours 2 seconds")), "\n"; // same as the last example but with extra days, hours, and seconds added to it
echo date("m/d/Y", strtotime("next Thursday")), "\n"; // prints next Thursday's date
echo date("m/d/Y", strtotime("last Monday")), "\n"; // prints last Monday's date
echo date("m/d/Y", strtotime("First day of next month")), "\n"; // prints date of first day of next month
echo date("m/d/Y", strtotime("Last day of next month")), "\n"; // prints date of last day of next month
echo date("m/d/Y", strtotime("First day of last month")), "\n"; // prints date of first day of last month
echo date("m/d/Y", strtotime("Last day of last month")), "\n"; // prints date of last day of last month
किसी अन्य स्वरूप में दिनांक परिवर्तित करें
मूल बातें
Simplist तरह से दूसरे में एक दिनांक स्वरूप परिवर्तित करने के लिए उपयोग करने के लिए है strtotime()
के साथ date()
। strtotime()
तिथि को यूनिक्स टाइमस्टैम्प में परिवर्तित कर देगा। इसके बाद यूनिक्स टाइमस्टैम्प को नए प्रारूप में परिवर्तित करने के लिए date()
पारित किया जा सकता है।
$timestamp = strtotime('2008-07-01T22:35:17.02');
$new_date_format = date('Y-m-d H:i:s', $timestamp);
या वन-लाइनर के रूप में:
$new_date_format = date('Y-m-d H:i:s', strtotime('2008-07-01T22:35:17.02'));
ध्यान रखें कि strtotime()
लिए दिनांक एक मान्य प्रारूप में होना आवश्यक है। एक वैध प्रारूप प्रदान करने में विफलता के परिणामस्वरूप strtotime()
गलत वापस आ जाएगा, जिससे आपकी तिथि 1969-12-31 हो जाएगी।
DateTime()
का उपयोग करना
PHP 5.2 के अनुसार, PHP ने DateTime()
वर्ग की पेशकश की जो हमें तारीखों (और समय) के साथ काम करने के लिए अधिक शक्तिशाली उपकरण प्रदान करता है। हम DateTime()
का उपयोग करते हुए उपरोक्त कोड को फिर से लिख सकते हैं:
$date = new DateTime('2008-07-01T22:35:17.02');
$new_date_format = $date->format('Y-m-d H:i:s');
यूनिक्स टाइमस्टैम्प के साथ काम करना
date()
अपने दूसरे पैरामीटर के रूप में एक यूनिक्स टाइमस्टैम्प लेता है और आपके लिए एक स्वरूपित तिथि लौटाता है:
$new_date_format = date('Y-m-d H:i:s', '1234567890');
DateTime () टाइमस्टैम्प से पहले @
जोड़कर यूनिक्स टाइमस्टैम्प के साथ काम करता है:
$date = new DateTime('@1234567890');
$new_date_format = $date->format('Y-m-d H:i:s');
यदि आपके पास जो टाइमस्टैम्प है वह मिलीसेकंड में है (यह 000
में समाप्त हो सकता है और / या टाइमस्टैम्प तेरह अक्षर लंबा है) आपको इसे दूसरे प्रारूप में बदलने से पहले इसे सेकंड में बदलने की आवश्यकता होगी। ऐसा करने के दो तरीके हैं:
-
substr()
का उपयोग करके पिछले तीन अंकों को ट्रिम करें
अंतिम तीन अंकों को ट्रिम करना कई तरीकों से प्राप्त किया जा सकता है, लेकिन substr()
का उपयोग करना सबसे आसान है:
$timestamp = substr('1234567899000', -3);
- 1000 से रूट को विभाजित करें
आप टाइमस्टैम्प को 1000 से विभाजित करके सेकंड में भी परिवर्तित कर सकते हैं। क्योंकि 32 बिट सिस्टम के लिए टाइमस्टैम्प बहुत बड़ा है क्योंकि आपको गणित को स्ट्रिंग्स के रूप में करने के लिए BCMath लाइब्रेरी का उपयोग करने की आवश्यकता होगी:
$timestamp = bcdiv('1234567899000', '1000');
एक यूनिक्स टाइमस्टैम्प प्राप्त करने के लिए आप strtotime()
उपयोग कर सकते हैं जो एक यूनिक्स टाइमस्टैम्प लौटाता है:
$timestamp = strtotime('1973-04-18');
DateTime () के साथ आप DateTime::getTimestamp()
उपयोग कर सकते हैं
$date = new DateTime('2008-07-01T22:35:17.02');
$timestamp = $date->getTimestamp();
यदि आप PHP 5.2 चला रहे हैं, तो आप इसके बजाय U
स्वरूपण विकल्प का उपयोग कर सकते हैं:
$date = new DateTime('2008-07-01T22:35:17.02');
$timestamp = $date->format('U');
गैर-मानक और अस्पष्ट तिथि प्रारूपों के साथ काम करना
दुर्भाग्य से सभी तिथियां जो एक डेवलपर के साथ काम करने के लिए होती हैं, एक मानक प्रारूप में नहीं होती हैं। सौभाग्य से PHP 5.3 ने हमें इसके लिए एक समाधान प्रदान किया। DateTime::createFromFormat()
हमें PHP को यह बताने की अनुमति देता है कि दिनांक स्ट्रिंग किस प्रारूप में है ताकि इसे आगे के हेरफेर के लिए सफलतापूर्वक DateTime ऑब्जेक्ट में पार्स किया जा सके।
$date = DateTime::createFromFormat('F-d-Y h:i A', 'April-18-1973 9:48 AM');
$new_date_format = $date->format('Y-m-d H:i:s');
PHP 5.4 में हमने क्लास मेंबर को एक्सेस करने की क्षमता हासिल कर ली है, जिससे हमें अपने DateTime()
कोड को वन-लाइनर में बदलने की सुविधा मिलती है:
$new_date_format = (new DateTime('2008-07-01T22:35:17.02'))->format('Y-m-d H:i:s');
दुर्भाग्य से यह DateTime::createFromFormat()
अभी तक काम नहीं करता है।
दिनांक स्वरूप के लिए पूर्वनिर्धारित स्थिरांक का उपयोग करना
हम PHP 5.1.0 के बाद से पारंपरिक तारीख प्रारूप स्ट्रिंग के बजाय date()
में date()
प्रारूप date()
लिए पूर्वनिर्धारित स्थिरांक का उपयोग कर सकते हैं।
पूर्वनिर्धारित दिनांक स्वरूप स्थिरांक उपलब्ध
DATE_ATOM
- परमाणु (2016-07-22T14: 50: 01 + 00: 00)
DATE_COOKIE
- HTTP कुकीज (शुक्रवार, 22-जुलाई -16 14:50:01 UTC)
DATE_RSS
- RSS (शुक्र, 22 जुलाई 2016 14:50:01 +0000)
DATE_W3C
- वर्ल्ड वाइड वेब कंसोर्टियम (2016-07-22T14: 50: 01 + 00: 00)
DATE_ISO8601
- ISO-8601 (2016-07-22T14: 50: 01 + 0000)
DATE_RFC822
- RFC 822 (शुक्र, 22 जुलाई 16 14:50:01 +0000)
DATE_RFC850
- RFC 850 (शुक्रवार, 22-जुलाई -16 14:50:01 UTC)
DATE_RFC1036
- RFC 1036 (शुक्र, 22 जुलाई 16 14:50:01 +0000)
DATE_RFC1123
- RFC 1123 (शुक्र, 22 जुलाई 2016 14:50:01 +0000)
DATE_RFC2822
- RFC 2822 (शुक्र, 22 जुलाई 2016 14:50:01 +0000)
DATE_RFC3339
- DATE_RFC3339
समान (2016-07-22T14: 50: 01 + 00: 00)
उपयोग के उदाहरण
echo date(DATE_RFC822);
यह आउटपुट देगा: शुक्र, 22 जुलाई 16 14:50:01 +0000
echo date(DATE_ATOM,mktime(0,0,0,8,15,1947));
यह आउटपुट: 1947-08-15T00: 00: 00 + 05: 30 होगा
दो तिथियों / समय के बीच का अंतर प्राप्त करना
सबसे व्यावहारिक तरीका है, DateTime
क्लास का उपयोग करना।
एक उदाहरण:
<?php
// Create a date time object, which has the value of ~ two years ago
$twoYearsAgo = new DateTime("2014-01-18 20:05:56");
// Create a date time object, which has the value of ~ now
$now = new DateTime("2016-07-21 02:55:07");
// Calculate the diff
$diff = $now->diff($twoYearsAgo);
// $diff->y contains the difference in years between the two dates
$yearsDiff = $diff->y;
// $diff->m contains the difference in minutes between the two dates
$monthsDiff = $diff->m;
// $diff->d contains the difference in days between the two dates
$daysDiff = $diff->d;
// $diff->h contains the difference in hours between the two dates
$hoursDiff = $diff->h;
// $diff->i contains the difference in minutes between the two dates
$minsDiff = $diff->i;
// $diff->s contains the difference in seconds between the two dates
$secondsDiff = $diff->s;
// Total Days Diff, that is the number of days between the two dates
$totalDaysDiff = $diff->days;
// Dump the diff altogether just to get some details ;)
var_dump($diff);
इसके अलावा, दो तारीखों की तुलना करना बहुत आसान है, बस तुलना ऑपरेटरों का उपयोग करें , जैसे:
<?php
// Create a date time object, which has the value of ~ two years ago
$twoYearsAgo = new DateTime("2014-01-18 20:05:56");
// Create a date time object, which has the value of ~ now
$now = new DateTime("2016-07-21 02:55:07");
var_dump($now > $twoYearsAgo); // prints bool(true)
var_dump($twoYearsAgo > $now); // prints bool(false)
var_dump($twoYearsAgo <= $twoYearsAgo); // prints bool(true)
var_dump($now == $now); // prints bool(true)