2016-09-06 12 views
12

stat() से पुनर्प्राप्त एक संशोधित समय से कनवर्ट करने के लिए सबसे बेवकूफ/कुशल तरीका क्या है datetime ऑब्जेक्ट पर कॉल करें? मैं निम्नलिखित (python3) के साथ आया था:स्टेट से()। St_mtime से डेटाटाइम?

from datetime import datetime, timedelta, timezone 
from pathlib import Path 

path = Path('foo') 
path.touch() 
statResult = path.stat() 
epoch = datetime(1970, 1, 1, tzinfo=timezone.utc) 
modified = epoch + timedelta(seconds=statResult.st_mtime) 
print('modified', modified) 

एक मुक्केबाज़ी दौर लगता है, और थोड़ा आश्चर्य की बात मैं मुश्किल कोड को वहाँ में यूनिक्स काल है। क्या कोई और सीधा तरीका है?

उत्तर

20

प्रयास करें datetime.fromtimestamp(statResult.st_mtime)

उदा

import datetime 

mod_timestamp = datetime.datetime.fromtimestamp(path.getmtime(<YOUR_PATH_HERE>)) 
+5

स्पष्ट है कि, कि एक वैकल्पिक निर्माता ('classmethod')' datetime' _class_, नहीं 'datetime' _module_ के एक समारोह पर है। इसलिए यदि आपके पास फ़ाइल के शीर्ष पर 'डेटाटाइम आयात करें' है, तो आपको 'datetime.datetime.fromtimestamp (...)' की आवश्यकता होगी। इसके अलावा, ओपी को 'pathlib' का उपयोग कर रहा है, न कि' os.path', जो 'पथ () होना चाहिए। Stat()। St_mtime'; उन्होंने कभी भी 'ओएस' आयात नहीं किया, इसलिए 'os.path' से' path.getmtime' का उपयोग करके ओपी के संदर्भ में थोड़ा भ्रमित हो सकता है। – ShadowRanger

+1

मैंने आयात डेटाटाइम के साथ दो बार उपयोग किए जाने वाले डेटाटाइम को दिखाने के लिए इसे सही किया है। – CashCow

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