2010-03-04 14 views
15

में दिनांक/समय कनवर्ट करना मेरे पास YYYYMMDD प्रारूप में एक तिथि है और एचएचएमएमएसएस प्रारूप में एक समय सूची में 4 वें और 5 वें तत्वों में स्ट्रिंग के रूप में है। आईई:वाई वाई वाईएमएमडीडी/एचएचएमएमएसएस प्रारूप में पाइथन डेटाटाइम

data[4] = '20100304' 
data[5] = '082835' 

मैं (में एक क्षेत्र नामित उत्पन्न करता है) दिनांक का उदाहरण बनाकर कर रहा हूँ इस तरह:

generatedtime = datetime.datetime(int(data[4][:4]),int(data[4][4:6]),int(data[4][6:]),int(data[5][:2]),int(data[5][2:4]),int(data[5][4:6])) 

यह देखते हुए कि इनपुट प्रारूप को बदल नहीं सकते, वहाँ एक क्लीनर तरह से मैं बनाने की जानी चाहिए डेटाटाइम ऑब्जेक्ट का मेरा उदाहरण?

+1

आपका कोड, जबकि अजीब लग रहा है, नौकरी अच्छी तरह से करता है। –

उत्तर

35

time आयात करने की कोई आवश्यकता नहीं है; datetime.datetime.strptime इसे स्वयं ही कर सकता है।

import datetime 
dt=datetime.datetime.strptime(data[4]+data[5],'%Y%m%d%H%M%S') 
print(dt) 
# 2010-03-04 08:28:35 

प्रारूप कोड (जैसे %Y%m%d%H%M%S) उपलब्ध जानकारी के लिए, strftime के लिए docs देखते हैं।

+1

यदि टाइमस्टैम्प निर्दिष्ट नहीं है, तो समय स्थानीय समय के रूप में माना जाएगा। निम्न उदाहरण यूटीसी समय को यूनिक्स टाइमस्टैम्प में परिवर्तित करता है: 'datetime.datetime.strptime (टाइमवल,"% वाई% एम% डी% एच% एम% एस ")। प्रतिस्थापित करें (tzinfo = datetime.timezone.utc) .timestamp() '(मैं वास्तव में एक एफ़टीपी एमडीटीएम प्रतिक्रिया पार्स करने के लिए इसका उपयोग करता हूं) – Lekensteyn

4

आप time.strptime पर एक नज़र डाल सकते हैं।

import time 
time.strptime('20100304 082835', '%Y%m%d %H%M%S') 

के ऊपर एक 24-घंटे घड़ी (%H) मान लिया गया है। 12 घंटे की घड़ी का उपयोग करते हुए %I का उपयोग करें।

उपलब्ध प्रारूप निर्देशों की एक पूरी सूची के लिए, के लिए time.strftime

0
import time, datetime 

x = time.strptime("30 Nov 00", "%d %b %y") 
datetime.datetime(x) 

डॉक्स की जाँच तुम भी दिनांक स्ट्रिंग की अपनी खुद की प्रारूप प्रदान कर सकते हैं, यहाँ doc है।

0

आप अपने मौजूदा कोड एक एक जनरेटर के साथ बिट (एक मानचित्र के बराबर) को साफ कर सकते हैं:

generatedtime = datetime.datetime(*(int(x) for x in 
    (data[4][:4], data[4][4:6], data[4][6:], data[5][:2], data[5][2:4],data[5][4:6]) 
    )) 

या यहाँ तक कि, यदि आप एक लोमड़ी की तरह पागल हो, तो आप datetime बयान भी क्लीनर कर सकता है (एक हास्यास्पद रेखा जोड़ने की कीमत पर):

slices = ((4, slice(4)), (4, slice(4,6)), (4, slice(6,None)), (5, slice(2)), (5, slice(2,4)), (5, slice(4,6))) 
generatedtime = datetime.datetime(*(int(data[i][s]) for (i,s) in slices)) 
संबंधित मुद्दे

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