2010-01-28 18 views
5

मुझे मेरी पाइथन लिपि चलाने पर सीडीटी पर वर्तमान समय पता होना चाहिए। हालांकि यह स्क्रिप्ट कई अलग-अलग टाइमज़ोन में चलाई जाएगी, इसलिए एक साधारण ऑफसेट काम नहीं करेगा। मुझे केवल लिनक्स के लिए एक समाधान की आवश्यकता है, लेकिन एक क्रॉस प्लेटफार्म समाधान आदर्श होगा।कहीं से भी विशेष टाइमज़ोन पर समय कैसे ढूंढें

+0

सीडीटी "सेंट्रल डेलाइट टाइम" – hoju

+0

को संदर्भित करता है, जब आप सीडीटी प्रभावी नहीं होते हैं तब भी आप सीडीटी में समय जानना चाहते हैं? –

+0

हाँ - जिस ऐप का मैं इंटरफेसिंग कर रहा हूं उसका उपयोग करता है। – hoju

उत्तर

4

आप time.gmtime() का उपयोग किसी भी मशीन से टाइम जीएमटी (यूटीसी) प्राप्त करने के लिए कर सकते हैं, फिर भी आप अपना ऑफ़सेट लागू कर सकते हैं।

+0

समस्या यह जान रही है कि ऑफसेट क्या है, इसलिए इससे मदद नहीं मिलती है। –

+0

लेनार्ट, नहीं, वह पूछ रहा है कि किसी भी अन्य से पहले ज्ञात टाइमज़ोन पर समय कैसे प्राप्त करें, जिसके लिए 'gmtime() 'सही समाधान है .. –

+0

मुझे पता है। समस्या अभी भी यह जान रही है कि दो टाइमज़ोन, सीडीटी और दूसरे के बीच ऑफ़सेट क्या हैं। –

8

pytz या dateutil.tz यहां चाल है। ।

>>> from pytz import timezone 
>>> mytz = timezone('Europe/Paris') 
>>> yourtz = timezone('US/Eastern') 

>>> from datetime import datetime 
>>> now = datetime.now(mytz) 
>>> alsonow = now.astimezone(yourtz) 

कठिनाई वास्तव में बाहर जो समय-क्षेत्र आप कर रहे हैं में dateutil.tz कि कम से बेहतर है लगाना में निहित है: मूल रूप से यह कुछ इस तरह है।

>>> from dateutil.tz import tzlocal, gettz 
>>> mytz = tzlocal() 
>>> yourtz = gettz('US/Eastern') 

आप सभी जुओं से भरा क्यों समय-क्षेत्रों बुराई कर रहे हैं की किरकिरा विवरण चाहते हैं, वे यहां हैं:

http://regebro.wordpress.com/2007/12/18/python-and-time-zones-fighting-the-beast/

http://regebro.wordpress.com/2008/05/10/python-and-time-zones-part-2-the-beast-returns/

http://regebro.wordpress.com/2008/05/13/thanks-for-the-testing-help-conclusions/

+0

+1। – jathanism

+0

ओपी को शायद इसकी आवश्यकता है: 'datetime.now (pytz.timezone ('यूएस/सेंट्रल'))'।स्थानीय टाइमज़ोन कोई फर्क नहीं पड़ता। – jfs

1

एक साधारण ऑफसेट काम करेंगे, आपको बस यूटीसी से ऑफसेट करना होगा।

का उपयोग datetime आप वर्तमान यूटीसी (जीएमटी) समय मिलता है और datetime ऑब्जेक्ट का उपयोग कर सकते हैं:

datetime.datetime.utcnow() - यूटीसी पर समय प्रदान करता है

datetime.datetime.now() - स्थानीय मशीन

पर समय प्रदान करता है

किसी भी सिस्टम से सीटी समय प्राप्त करने के लिए आपको यूटीसी से सीटी टाइम ऑफ़सेट जानने की जरूरत है। फिर डेलाइट बचत समय कोड के लिए खाता चालू ऑफसेट प्राप्त करने के लिए एक फ़ंक्शन।

>>> import datetime 
>>> utc = datetime.datetime.utcnow() 
>>> current_ct_offset = get_current_ct_offset() 
>>> ct_datetime = utc + datetime.timedelta(hours=current_ct_offset) 

मैं यहाँ कुछ अनदेखी किया जा सकता है, लेकिन अपने ही चिंतित एक के बारे में समय-क्षेत्र और अपने नहीं कर रही TZ नाम हैंडलिंग, यह बहुत सीधे आगे है या नहीं।

+0

ठीक है, वह दो समय के बारे में चिंतित है। स्थानीय, और सीडीटी। और अधिकांशतः, सीडीटी के साथ वह वास्तव में डेलाइट सेविंग में बदलावों की देखभाल किए बिना सेंट्रल डेलाइट सेविंग टाइम का मतलब नहीं लेता है, क्योंकि यह अजीब होगा। –

+0

शायद प्रश्न को और स्पष्टीकरण की आवश्यकता है। मेरी समझ यह है कि वह चाहता है कि "वर्तमान समय को एक एकल विशिष्ट टाइमज़ोन> पर जानना"। इस मामले में आपको केवल यूटीसी समय और <विशिष्ट टाइमज़ोन> यूटीसी-ऑफ़सेट जानने की आवश्यकता है। इस मामले में आपको स्थानीय समय से चिंतित होने की आवश्यकता नहीं है। – monkut

+0

हां। लेकिन ऑफ़सेट को विश्वसनीय रूप से जानने का एकमात्र तरीका, अगर वह डेज़लाइट सेविंग की परवाह करता है (और यह बेवकूफ नहीं होगा) टाइमज़ोन डेटाबेस का उपयोग कर है। इसलिए, मेरा जवाब अभी भी सही है। –

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