लब्बोलुआब यह है कि 6 ver कुलपति के साथ, tzset() ठीक से काम नहीं करता है। हालांकि वीसी वर्क 8 tzset() अब काम करता है (मुझे लगता है कि यह 7 में भी काम कर रहा है, लेकिन मेरे पास उस संस्करण को जांचने के लिए नहीं है)।
तो अब ऐसा होना चाहिए कि स्रोत कोड में HAVE_WORKING_TZSET सक्षम करें और पुन: संकलित करें (और परीक्षण)।
मेरे अनुभव में, टीजेड की विभिन्न सेटिंग्स के लिए कार्यों की सभी ज़रूरतों को एक काम करने वाला tzset() होना चाहिए। जब भी आप सी लैंग टीजेड var -or- Windows TIME_ZONE_INFORMATION बदलते हैं तो आपको tzset() को कॉल करना होगा। वीसी वर्क 6 में यह संभव नहीं था और यही कारण है कि HAVE_WORKING_TZSET सक्षम नहीं है (लेकिन अब कम से कम वीसी वर्क 8 और ऊपर होना चाहिए)।
बीटीडब्ल्यू। मेरे द्वारा की जाने वाली सभी दिनांक/समय सामग्री के लिए, मेरे पास हमेशा एक SetUtcTime() और UnsetUtcTime() है जो टीजेड को जीएमटी में सेट करता है और तदनुसार tzset() को कॉल करता है। मेरे पास फ़ंक्शन को अन्य टाइमज़ोन पर सेट करने के लिए भी कार्य करता है। यह ठीक से करने का एकमात्र तरीका है! कई वर्षों के अनुभव में, मैं कह सकता हूं कि कुछ भी परेशानी है। और calendar.timegm() सही नहीं है। Tzset() का प्रयोग करें।
(मैं किसी अन्य कंप्यूटर से इस टाइप किया, इसलिए उम्मीद है कोई वर्तनी त्रुटियों, लेकिन यह मुद्दा यह है कि मैं बना रही है:
यहाँ सबूत यह अब काम कर रहा है (इसलिए बग लेखक जाना खिड़कियों कोड तय करने के लिए) है कोड नहीं)।
नोट: सभी को नीचे अजगर नोट (मैं अजगर के CTYPE इंटरफ़ेस से सी लैंग बोल रहा हूँ) है: क्योंकि मैं यहाँ DLL सीमा के माध्यम से TZ की स्थापना कर रहा हूँ और स्थानीय थ्रेड और सभी कि बकवास, यह के रूप में इस्तेमाल नहीं किया जा सकता एक काम के आसपास। HAVE_WORKING_TZSET को पुन: सक्षम करना होगा।
import time
from ctypes import *
dTime = time.time()
nTime = int (dTime)
intTime = c_int (nTime)
print time.ctime (dTime)
print c_char_p (cdll.msvcrt.ctime (addressof (intTime))).value
-> ... 21:02:40 ... (अजगर)
-> ... 21:02:40 ...(सी लैंग)
cdll.msvcrt._putenv ('TZ=GMT')
cdll.msvcrt._tzset()
(सामान्य रूप से time.tzset() कहा जा सकता है और यह भी बुला inittimezone() अजगर के समय क्षेत्र के साथ-साथ चर अद्यतन करने के लिए)
print time.ctime (dTime)
print c_char_p (cdll.msvcrt.ctime (addressof (intTime))).value
-> ... 21: 02:40 ... (पायथन)
-> ... 11:02:40 ... (सी लैंग) < - अंतर्निहित वीसी वर्क 8 अब काम कर रहा है!
(इसलिए यदि HAVE_WORKING_TZSET (8 ver और ऊपर) के लिए आप मिलेगा इस :)
परिभाषित -> ... 11:02:40 ... (अजगर)
-> ... 11 : 02: 40 ... (सी लैंग)
बस को देखने के लिए मैं क्या मतलब है स्रोत कोड की जाँच करें।
मैंने इसे नवीनतम पायथन '2.0' श्रृंखला के साथ चेक किया: 2.7.2 अभी।
मैं इसकी पुष्टि कर सकता हूं, मुझे एक बग जैसा दिखता है। – AndiDog
eval आवश्यक क्यों है? –
@ रैफ क्यों eval आवश्यक नहीं होगा? मैं एक टपल चाहता हूं कि मैं एक स्ट्रिंग के साथ काम कर सकता हूं। –