2011-12-03 22 views
7

पीएचपी date() & time() वापसी गलत समय:पीएचपी गलत दिनांक/समय

जब date.timezone = "Europe/Riga" समय date() द्वारा दिया 03-12-2011 08:57:12 था, लेकिन सिस्टम का समय 03-12-2011 01:57:12 (समय क्षेत्र यूरोप/रीगा - उस पल में सही समय) था। जब मैं समय-क्षेत्र पर "यूरोप/लंदन" बदल गया है, समय 03-12-2011 06:57:12 लिए (वास्तविक समय 02-12-2011 23:57:12)

समय date/hwclock --show द्वारा वापस सही था

ओएस (03-12-2011 01:57:12 प्रणाली समयक्षेत्र रीगा के रूप में सेट के साथ) बदल दिया है: डेबियन 6.0

मैंने SO/Google पर समान मुद्दों के बारे में अधिकतर प्रश्नों की जांच की है, लेकिन उनमें से सभी को गलत टाइमज़ोन निर्दिष्ट है।

जहां तक ​​मैं कह सकता हूं कि php -> os के बीच समस्या है। बेशक, क्योंकि गलत समय ऑफसेट हमेशा स्थिर रहता है, मैं अंतर घटा सकता हूं, लेकिन यह उचित समाधान नहीं है।

किसी भी विचार की सराहना की जाएगी।

+1

आप अपनी 'तिथि() 'मान के लिए क्या उपयोग कर रहे हैं? जैसे 'तारीख ('Ymd एच: मैं: s')' –

+1

हाँ - 'तारीख ('Ymd एच: मैं: s')' – relic

+0

क्या 'DateTimeZone' साथ संयोजन के रूप में यदि आप' DateTime' क्लास का उपयोग तिथि निर्धारित करने के लिए होता है, ? उदाहरण के लिए '$ d = नया डेटटाइम ('', नया डेटटाइमज़ोन ('यूरोप/रीगा')); echo $ d-> प्रारूप ('वाई-एम-डी एच: आई: एस'); ' –

उत्तर

3

समस्या मेरे सर्वरों में से किसी एक पर दिखाई देने वाली समान दिखती है। bug in php 5.3.2-1 पसंद है। बग रिपोर्ट में php स्क्रिप्ट चलाने और अपने परिणामों को पोस्ट करने का प्रयास करें।

+1

लगता है कि एक वास्तविक बग नहीं था। संवाददाता के पास बस अन्य कोड था जो डिफ़ॉल्ट टाइमज़ोन को रीसेट कर रहा था। इस अर्थ में मान्य है कि आपको इसके लिए देखना चाहिए। कोड और .ini सेटिंग्स के Beaware जो प्रभाव हो सकता है। – ficuscr

10

पढ़ना PHP मैनुअल लगता है कि date.timezone का व्यवहार php.ini में सेटिंग्स से प्रभावित होता है। सभी दिनांक/समय फ़ंक्शन में डिफ़ॉल्ट टाइमज़ोन सेट करने का एक और तरीका है और यह date_default_timezone_set है। साथ सेट करना का प्रयास करें:

date_default_timezone_set('Europe/Riga'); 
अपने date.timezone कोड के बजाय

+0

धन्यवाद। लेकिन मैंने पहले ही सफलता के बिना कोशिश की है। तथ्य यह है कि जब मैंने रीगा से लंदन तक टाइमज़ोन बदल दिया, तो समय अंतर 2 घंटे का सुझाव दिया गया था कि टाइमज़ोन चयन "काम करता है", लेकिन समस्या प्रारंभिक समय मूल्य के साथ है। – relic

2

सिस्टम का टाइमज़ोन गलत हो सकता है। इसका परिणाम PHP दिनांक() फ़ंक्शन द्वारा दिए गए समय में एक बदलाव में होता है, दोनों php date.timezone (php.ini में) althought और सर्वर के सिस्टम समय सही हैं।

-4

PHP समय युग टाइम स्केल पर आधारित है जो जीएमटी और बाद में यूटीसी का उपयोग करता है। अधिकांश लोग अब इसे यूनिक्स समय के रूप में संदर्भित करते हैं। चूंकि PHP यूनिक्स समय का उपयोग करता है, टाइमज़ोन का उपयोग नहीं किया जाता है। मेरा मानना ​​है कि सेकंड में टाइमज़ोन घंटों को घटाना अंतरों के लिए समायोजित करने का सही तरीका है।

+0

यूनिक्स समय समय पर एक निश्चित पल के बाद से एक साधारण गणना है-यह समय क्षेत्र द्वारा पूरी तरह से अप्रभावित है। इसके अतिरिक्त, PHP में एक सुंदर सभ्य समय क्षेत्र हैंडलिंग है; इसे छोड़ने और अपना खुद का लिखने का कोई कारण नहीं है। –

-2

आप php.ini में date.timezone सेट और अपने सर्वर http://php.net/manual/en/timezones.php

+0

ओपी का मतलब यह था कि जब उसने 'date.timezone =" यूरोप/रीगा "कहा था। –

1

मैं भी समय क्षेत्र के साथ कुछ समस्या थी पुनः आरंभ करना। यह किसी के लिए आसान हो सकता है।

मेरे मामले में, चिली सुमेर टाइम सीएलएसटी ने गलत टाइमज़ोन ऑफ़सेट लौटा दिया।

टाइमज़ोनब अपडेट करने के लिए मेरे लिए काम किया।

जाएं: https://pecl.php.net/package/timezonedb

Widnows dll के नवीनतम संस्करण को डाउनलोड के लिए, "ext" निर्देशिका में कॉपी। PHP संपादित करें।आरं और रेखा के नीचे रख:

विस्तार = php_timezonedb.dll

लिनक्स के लिए आप उपयोग कर सकते हैं:

PECL timezonedb

स्थापित करने और php.ini पुट में:

विस्तार = php_timezonedb.so