2012-02-05 18 views
5

मैं तीन सर्वर है, कर तीनों सर्वर पर निम्नलिखित:20 99 में किसी तारीख के लिए PHP के स्ट्रेटोटाइम का काम नहीं करने का कारण क्या होगा?

echo strtotime('2099-12-31'); 
echo strtotime(date('Y-m-d')); 

मुझे हो जाता है:

सर्वर # 1: (php 5.3.8, 64 बिट)

4102376400 
1328418000 

सर्वर 2 : (PHP 5.3.2, 32 बिट)

**[nothing]** 
1328418000 

सर्वर # 3: (PHP 5.3.2 - 64 बिट मैंने सोचा कि यह टी एक PHP संस्करण मुद्दा)

4102376400 
1328418000 

क्या strtotime सर्वरों में से एक नहीं बल्कि दूसरों पर विफल हो जाएगा? सभी तीनों में एक ही डिफ़ॉल्ट टाइमज़ोन और date.timezone सेटिंग्स php.ini में हैं (सुनिश्चित नहीं है कि इसका कोई प्रभाव होगा या नहीं)। मैंने त्रुटियों को भी चालू कर दिया और मैं कुछ भी नहीं देख रहा हूं।

+3

सर्वर 2 32-बिट है? –

+2

ठीक है, अनुमान है कि 32 बिट यूनिक्स युग (किसी भी दिनांक 2038 या बाद में) के बाहर होने की तारीख काफी बड़ी है। क्या यह 32 बिट बनाम 64 बिट चीज हो सकता है? –

+3

आपके सर्वरों में से एक माया भविष्यवाणी को ध्यान में रखता है। – dqhendricks

उत्तर

9

शायद यह 32-बिट मुद्दा है। यह मेरी 64-बिट सर्वर पर बस ठीक काम करता है, लेकिन मेरी 32-बिट Ubuntu strtotime('2099-12-31')

अधिक जानकारी के लिए पर झूठे रिटर्न manual में इस नोट को देखने के (मेरे द्वारा प्रकाश डाला):

मान्य श्रेणी टाइमस्टैम्प का आमतौर पर शुक्र से होता है, 13 दिसंबर 1 9 01 20:45:54 यूटीसी टू ट्यू, 1 9 जनवरी 2038 03:14:07 यूटीसी। (ये तिथियां हैं जो 32-बिट हस्ताक्षरित पूर्णांक के लिए न्यूनतम और अधिकतम मानों से मेल खाते हैं।) इसके अतिरिक्त, सभी प्लेटफ़ॉर्म नकारात्मक टाइमस्टैम्प का समर्थन नहीं करते हैं, इसलिए आपकी तिथि सीमा यूनिक्स युग से पहले तक सीमित नहीं हो सकती है। इसका मतलब है कि उदा। 1 जनवरी, 1 9 70 से पहले की तारीख विंडोज़, कुछ लिनक्स वितरण और कुछ अन्य ऑपरेटिंग सिस्टम पर काम नहीं करेगी। PHP 5.1.0 और नए संस्करण हालांकि इस सीमा को पार करते हैं।

PHP के 64-बिट संस्करणों के लिए, टाइमस्टैम्प की वैध सीमा प्रभावी रूप से अनंत है, क्योंकि 64 बिट्स किसी भी दिशा में लगभग 2 9 3 अरब वर्ष का प्रतिनिधित्व कर सकते हैं।

+4

PHP मैनुअल इतना मूर्ख है। 2 9 3 अरब और अनंत के बीच एक ** बड़ा ** अंतर है। –

+3

वह जगह है जहां "प्रभावी" आता है। – ceejayoz

+1

इसका एकमात्र प्रभाव मुझे क्रिंग करने और इन टिप्पणियों को लिखना है। –

2

रूप docs प्रति:

एक टाइमस्टैम्प की मान्य श्रेणी शुक्र से आम तौर पर है, 13 दिसंबर 1901 मंगल करने के लिए 20:45:54 यूटीसी, 19 जनवरी 2038 03:14:07 यूटीसी। (ये तिथियां हैं जो 32-बिट हस्ताक्षरित पूर्णांक के लिए न्यूनतम और अधिकतम मानों से मेल खाते हैं।) इसके अतिरिक्त, सभी प्लेटफ़ॉर्म नकारात्मक टाइमस्टैम्प का समर्थन नहीं करते हैं, इसलिए आपकी तिथि सीमा यूनिक्स युग से पहले तक सीमित नहीं हो सकती है। इसका मतलब है कि उदा। 1 जनवरी, 1 9 70 से पहले की तारीख विंडोज़, कुछ लिनक्स वितरण और कुछ अन्य ऑपरेटिंग सिस्टम पर काम नहीं करेगी। PHP 5.1.0 और नए संस्करण हालांकि इस सीमा को पार करते हैं।

PHP के 64-बिट संस्करणों के लिए, टाइमस्टैम्प की वैध सीमा प्रभावी रूप से अनंत है, क्योंकि 64 बिट्स किसी भी दिशा में लगभग 2 9 3 अरब वर्ष का प्रतिनिधित्व कर सकते हैं।

उदाहरण 2019-12-31 को आज़माएं, उम्मीद के अनुसार काम करना चाहिए।

संबंधित मुद्दे

 संबंधित मुद्दे