बस डेटाइम
$beginOfDay = DateTime::createFromFormat('Y-m-d H:i:s', (new DateTime())->setTimestamp($timestamp)->format('Y-m-d 00:00:00'))->getTimestamp();
$endOfDay = DateTime::createFromFormat('Y-m-d H:i:s', (new DateTime())->setTimestamp($timestamp)->format('Y-m-d 23:59:59'))->getTimestamp();
पहले एक DateTime ऑब्जेक्ट बनाया जाता है और टाइमस्टैम्प वांछित टाइमस्टैम्प पर सेट होता है। फिर वस्तु को दिन की शुरुआत या अंत में घंटे / मिनट / सेकंड की सेटिंग के रूप में स्वरूपित किया जाता है। अंत में, एक नया DateTime ऑब्जेक्ट इस स्ट्रिंग से बनाया गया है और टाइमस्टैम्प पुनर्प्राप्त है।
पठनीय
$dateTimeObject = new DateTime();
$dateTimeObject->setTimestamp($timestamp);
$beginOfDayString = $dateTimeObject->format('Y-m-d 00:00:00');
$beginOfDayObject = DateTime::createFromFormat('Y-m-d H:i:s', $beginOfDayString);
$beginOfDay = $beginOfDayObject->getTimestamp();
हम इस लंबे संस्करण का उपयोग करके वैकल्पिक रूप से दिन का अंत प्राप्त कर सकते हैं:
$endOfDayObject = clone $beginOfDayOject();
$endOfDayObject->add(new DateInterval('P1D'))->sub(new DateInterval('PT1S'));
$endOfDay = $endOfDayOject->getTimestamp();
समय क्षेत्र
टाइमज़ोन को प्रारूप में टाइमस्टैम्प इंडिकेटर को जोड़कर सेट किया जा सकता है जैसे O
डेटाइम ऑब्जेक्ट बनाने के बाद टाइमस्टैम्प को निर्दिष्ट करना:
$beginOfDay = DateTime::createFromFormat('Y-m-d H:i:s O', (new DateTime())->setTimezone(new DateTimeZone('America/Los_Angeles'))->setTimestamp($timestamp)->format('Y-m-d 00:00:00 O'))->getTimestamp();
डेटटाइम का लचीलापन
हम अन्य जानकारी भी प्राप्त कर सकते हैं जैसे कि महीने की शुरुआत / अंत या घंटे के शुरू / अंत में निर्दिष्ट दूसरा प्रारूप बदलकर। महीने के लिए: 'Y-m-01 00:00:00'
और 'Y-m-t 23:59:59'
। घंटे के लिए: 'Y-m-d H:00:00'
और'Y-m-d H:59:59'
ऐड () / सब () और डेटइंटरवल ऑब्जेक्ट्स के संयोजन में विभिन्न स्वरूपों का उपयोग करके, हम किसी भी अवधि की शुरुआत या अंत प्राप्त कर सकते हैं, हालांकि लीप वर्षों को सही ढंग से संभालने के लिए कुछ देखभाल की आवश्यकता होगी।
प्रासंगिक लिंक
PHP डॉक्स से: