दिलचस्प पोस्ट
कंसल्टेंसी इन्फ़ोरी में एनएसईटी के वर्तमान कल्चर और कंटेंट यूक कृषि गुणों के बीच अंतर क्या है? टेक्स्टब्लॉक wpf को हाइपरलिंक जोड़ें ग्रहण – अनुपस्थित लाइन संख्या विशेषताओं के कारण ब्रेकपॉइंट स्थापित करने में असमर्थ कैसे यूआरएल में अतिरिक्त पलायन जोड़ने से NSJSONSerialization को रोकने के लिए पोस्टग्रेएसक्यूएल में दो तिथियों के बीच समय सीमा उत्पन्न करना सी # में दो एरे के बीच "diff" हो रहा है? एकाधिक पंक्तियों को स्पैन करने के लिए मैं एक बूटस्ट्रैप कॉलम कैसे प्राप्त करूं? एंड्रॉइड में मेरे स्थान से गंतव्य स्थान तक की दूरी गणना मैं Chrome में फ़ाइल इनपुट से "कोई फ़ाइल चुना नहीं" टूलटिप कैसे निकाल सकता हूं? पुनः साइन इन आईपीए (आईफोन) jQuery टेक्स्ट फ़ेड / ट्रांज़िशन एक टेक्स्ट से दूसरे में? बिटमैपफिचर। डीकोड रिसोर्स एंड्रॉइड 2.2 में एक अस्थायी बिटमैप रिटर्न और एंड्रॉइड 1.6 में एक अपरिवर्तनीय बिटमैप संशोधित समापन तक पहुंच एल्गोरिथ्म दो की छोटी शक्ति पाने के लिए जो किसी दिए गए मान के बराबर या बराबर है Mysql में utf8mb4 और utf8 वर्णसेट्स में क्या अंतर है?

पायथन: datetime.today का मूल्य कैसे प्राप्त करें () जो कि "टाइमज़ोन जागरूक" है?

मैं datetime.today() मूल्य से एक तिथि मान घटाकर कोशिश कर रहा हूं कि कितना समय पहले कुछ था। लेकिन यह शिकायत करता है:

 TypeError: can't subtract offset-naive and offset-aware datetimes 

मान datetime.today() "टाइमज़ोन जागरूक" नहीं लगता है, जबकि मेरी अन्य दिनांक मान है मैं datetime.today() मूल्य कैसे प्राप्त करूं? अभी यह मुझे स्थानीय समय में दे रहा है, जो पीएसटी होता है, अर्थात यूटीसी -8 घंटा। सबसे खराब मामला है, क्या एक तरीका है मैं मैन्युअल रूप से datetime.today() द्वारा दिए गए datetime ऑब्जेक्ट में टाइमज़ोन मान दर्ज कर सकता हूं और इसे यूटीसी -8 में सेट कर सकता हूं? बेशक, आदर्श समाधान उस समय के लिए स्वचालित रूप से समय क्षेत्र को पता होगा

Solutions Collecting From Web of "पायथन: datetime.today का मूल्य कैसे प्राप्त करें () जो कि "टाइमज़ोन जागरूक" है?"

मानक पुस्तकालय में, अपना समयक्षेत्र वर्ग बनाने के बिना जागरूक समय क्षेत्र बनाने का कोई क्रॉस-प्लेटफ़ॉर्म तरीका नहीं है।

Windows पर, win32timezone.utcnow() , लेकिन यह pywin32 का हिस्सा है। मैं बजाय पीटाज़ लाइब्रेरी का उपयोग करने का सुझाव दूंगा , जिसमें अधिकांश समयक्षेत्रों का अद्यतित डेटाबेस है

स्थानीय समयक्षेत्रों के साथ कार्य करना बहुत मुश्किल हो सकता है (पीटाज़ प्रलेखन पढ़ें!), ताकि आप अपने आवेदन के दौरान UTC का उपयोग करना चाहें। आप वर्तमान तिथि / समय इतनी पसंद कर सकते हैं:

 import pytz from datetime import datetime datetime.utcnow().replace(tzinfo=pytz.utc) 

ध्यान दें कि datetime.today() और datetime.now() स्थानीय समय लौटाते हैं, यूटीसी समय नहीं, इसलिए आवेदन करना .replace(tzinfo=pytz.utc) को सही नहीं होगा।

यह करने का एक और अच्छा तरीका है:

 datetime.now(pytz.utc) 

जो थोड़ी छोटी है और वही करता है

चेतावनी:

तारीख और समय पर आपरेशन करने के लिए यूटीसी समय का कुछ भी उपयोग न करें। आप कुछ फैंसी डेट-टाइम ऑपरेशन करने के लिए एक अलग समयक्षेत्र का उपयोग करने के लिए परीक्षा ले सकते हैं, लेकिन यह संभवतः आप देखे बिना असफल हो जायेंगे:

प्रयत्न:

 d = datetime.datetime.now(pytz.timezone('America/Los_Angeles') >>> datetime.datetime(2017, 9, 14, 22, 18, 51, 892210, tzinfo=<DstTzInfo 'America/Los_Angeles' PDT-1 day, 17:00:00 DST>) # add some days to the date that is in a localized timezone d = d + datetime.datetime.timedelta(days=90) >>> datetime.datetime(2017, 12, 13, 22, 18, 51, 892210, tzinfo=<DstTzInfo 'America/Los_Angeles' PDT-1 day, 17:00:00 DST>) 

और वह गलत है: यह होना चाहिए:

 >>> datetime.datetime(2017, 12, 13, 21, 18, 51, 892210, tzinfo=<DstTzInfo 'America/Los_Angeles' PST-1 day, 17:00:00 DST>) 

डेलाइट बचत परिवर्तन की वजह से

यदि आप यूटीसी समय में इस ऑपरेशन करते हैं, और फिर स्थानीयकृत समयक्षेत्र में डालें:

 d = datetime.datetime.now(pytz.UTC) >>> datetime.datetime(2017, 9, 15, 5, 34, 28, 716403, tzinfo=<UTC>) # Add offset in UTC time d = d + datetime.timedelta(days=90) >>> datetime.datetime(2017, 12, 14, 5, 34, 28, 716403, tzinfo=<UTC>) # Cast to local timezone d.astimezone(pytz.timezone('America/Los_Angeles')) >>> datetime.datetime(2017, 12, 13, 21, 34, 28, 716403, tzinfo=<DstTzInfo 'America/Los_Angeles' PST-1 day, 16:00:00 STD>) 

आप सही परिणाम प्राप्त करते हैं

किसी विशिष्ट समयक्षेत्र में, वर्तमान समय प्राप्त करें:

 import datetime import pytz my_date = datetime.datetime.now(pytz.timezone('US/Pacific')) 

समय क्षेत्र का निर्माण करने के लिए एक और तरीका वर्तमान समय का प्रतिनिधित्व करने वाले datetime ऑब्जेक्ट:

 import datetime import pytz pytz.utc.localize( datetime.datetime.utcnow() ) 

यहाँ एक stdlib समाधान है जो पायथन 2 और 3 दोनों पर काम करता है:

 from datetime import datetime now = datetime.now(utc) # timezone-aware datetime.utcnow() today = datetime(now.year, now.month, now.day, tzinfo=utc) # midnight 

जहां today यूटीसी और यूटीसी में दिन (मध्यरात्रि) की शुरुआत का एक जागरूक डेटाटाइम उदाहरण है, एक tzinfo ऑब्जेक्ट है ( डॉक्स से उदाहरण ):

 from datetime import tzinfo, timedelta ZERO = timedelta(0) class UTC(tzinfo): def utcoffset(self, dt): return ZERO def tzname(self, dt): return "UTC" def dst(self, dt): return ZERO utc = UTC() 

संबंधित: किसी यूटीसी समय के लिए मध्यरात्रि (एक दिन की शुरुआत) प्राप्त करने के कई तरीकों की तुलनात्मक तुलना।
ध्यान दें: यह अधिक जटिल है, एक समय क्षेत्र के लिए एक गैर-नियत यूटीसी ऑफसेट के साथ मध्यरात्रि प्राप्त करने के लिए ।

पायथन 3 में, मानक पुस्तकालय यह बहुत आसान बना देता है:

 >>> import datetime >>> datetime.datetime.now(datetime.timezone.utc) datetime.datetime(2016, 8, 26, 14, 34, 34, 74823, tzinfo=datetime.timezone.utc) 

यदि आप एक ऐसा समाधान चाहते हैं जो केवल मानक लाइब्रेरी का उपयोग करता है और वह पायथन 2 और पायथन 3 दोनों में काम करता है, तो जेएफ सेबैस्टियन का जवाब देखें ।

pytz एक पायथन लाइब्रेरी है जो पायथन 2.3 या उच्चतर का उपयोग करके सटीक और क्रॉस प्लेटफ़ॉर्म टाइमज़ोन गणना की अनुमति देता है।

Stdlib के साथ, यह संभव नहीं है

SO पर एक समान प्रश्न देखें

यदि आप Django का प्रयोग कर रहे हैं, तो आप दिनांक गैर-टीएजी जागरूक (केवल यूटीसी) निर्धारित कर सकते हैं।

Settings.py में निम्न पंक्ति टिप्पणी करें:

 USE_TZ = True 

इसे stdlib के साथ उत्पन्न करने का एक तरीका है:

 import time from datetime import datetime FORMAT='%Y-%m-%dT%H:%M:%S%z' date=datetime.strptime(time.strftime(FORMAT, time.localtime()),FORMAT) 

दिनांक स्थानीय दिनांक और यूटीसी से ऑफ़सेट की बचत करेगा, तारीख को यूटीसी समयक्षेत्र में नहीं, इसलिए आप इस समाधान का उपयोग कर सकते हैं यदि आपको यह पहचानने की आवश्यकता है कि तिथि किस समय उत्पन्न होती है । इस उदाहरण में और मेरे स्थानीय समयक्षेत्र में:

 date datetime.datetime(2017, 8, 1, 12, 15, 44, tzinfo=datetime.timezone(datetime.timedelta(0, 7200))) date.tzname() 'UTC+02:00' 

उत्पन्न समय संरचना के यूटीसी ऑफ़सेट को इंगित करने के लिए कुंजी, प्रतिनिधित्व फॉर्ममैट के लिए %z निर्देश जोड़ रहा है। अन्य प्रतिनिधित्व प्रारूपों को डेटटाइम मॉड्यूल डॉक्स में परामर्श किया जा सकता है

यदि आपको यूटीसी समयक्षेत्र में तारीख की आवश्यकता है, तो आप time.localtime () को time.gmtime () के साथ बदल सकते हैं

 date=datetime.strptime(time.strftime(FORMAT, time.gmtime()),FORMAT) date datetime.datetime(2017, 8, 1, 10, 23, 51, tzinfo=datetime.timezone.utc) date.tzname() 'UTC' 

संपादित करें

यह केवल python3 पर काम करता है अजगर 2 डायलॉग पर डायरेक्टिव डायरेक्टिव उपलब्ध नहीं है

यहां वर्णित के रूप में दिनांकित तिथि का उपयोग क्यों नहीं किया जाएगा: http://joelinoff.com/blog/?p=802

 from dateutil.tz import tzlocal # Get the current date/time with the timezone. now = datetime.datetime.now(tzlocal()) 

utc समयक्षेत्र में समय-समय-जागरूकता की तारीख प्राप्त करना काम करने के लिए तिथि घटाव के लिए पर्याप्त है।

लेकिन अगर आप अपने वर्तमान समय क्षेत्र में समय-क्षेत्र-जागरूकता की तारीख चाहते हैं, तो tzlocal जाने का तरीका है:

 from tzlocal import get_localzone # pip install tzlocal from datetime import datetime datetime.now(get_localzone()) 

पीएस dateutil में एक समान कार्य ( dateutil.tz.tzlocal ) है। लेकिन नाम साझा करने के बावजूद इसके पास एक पूरी तरह से अलग कोड बेस है, जो जेएफ सेबस्टियन द्वारा उल्लिखित गलत परिणाम दे सकते हैं।

यदि आप अजगर में वर्तमान समय और तारीख प्राप्त करते हैं, तो आप वर्तमान तिथि और समय की तरह प्राप्त होने के बाद अजगर में पैटास पैकेज की तारीख और समय आयात करें।

 from datetime import datetime import pytz import time str(datetime.strftime(datetime.now(pytz.utc),"%Y-%m-%d %H:%M:%S%t"))