मैं फ़ंक्शन की एक जोड़ी लिखने की कोशिश कर रहा हूं, dt
और ut
, जो सामान्य यूनिक्स समय के बीच आगे और पीछे परिवर्तित होता है 1 9 70-01-01 00:00:00 यूटीसी) और एक पायथन डेटाटाइम ऑब्जेक्ट।एक यूनिटटाइम को डेटाटाइम ऑब्जेक्ट में कनवर्ट करें और फिर से वापस जाएं (समय रूपांतरण फ़ंक्शन जो इनवर्सेज़ हैं)
तो dt
और ut
उचित प्रतिलोम थे तो इस कोड को दो बार एक ही टाइमस्टैम्प प्रिंट होगा:
import time, datetime
# Convert a unix time u to a datetime object d, and vice versa
def dt(u): return datetime.datetime.fromtimestamp(u)
def ut(d): return time.mktime(d.timetuple())
u = 1004260000
print u, "-->", ut(dt(u))
ओह, दूसरा टाइमस्टैम्प 3600 सेकंड (एक घंटे) पहले से कम है। मुझे लगता है कि यह केवल बहुत ही विशिष्ट unixtimes के लिए होता है, शायद उस घड़ी के दौरान कि डेलाइट बचत समय खत्म हो जाता है। लेकिन क्या dt
और ut
लिखने का कोई तरीका है, इसलिए वे एक-दूसरे के सही उलटे हैं?
संबंधित प्रश्न: Making matplotlib's date2num and num2date perfect inverses
btw, समारोह कुछ नहीं करता है, लेकिन साथ एक और फ़ंक्शन को कॉल करता है, तो वही तर्क तब आप इसे असाइन कर सकते हैं: 'dt = datetime.datetime.utcfromtimestamp'। कार्य पाइथन में प्रथम श्रेणी के नागरिक हैं: आप उन्हें किसी अन्य कार्यों के पैरामीटर के रूप में पास कर सकते हैं, कार्यों से वापस आ सकते हैं, आदि – jfs
आह, अच्छा, बढ़िया बिंदु! क्या ऐसा करना या संक्षेप में मामला करना अधिक कुशल है? 'Def f (x) के बारे में क्या: वापसी foo (x)' बनाम 'f = lambda x: foo (x)'? (मेरी यादें यह है कि वे कार्यात्मक और दक्षता दोनों के बराबर हैं।) – dreeves
'f = g' का अर्थ है कि f, g दो नाम हैं जो एक ही कार्य को संदर्भित करते हैं। 'def' और 'lambda' नया फ़ंक्शन बनाते हैं। – jfs