2009-02-01 7 views
14

मैं कुछ चतुर तिथियों की कोशिश कर रहा हूं क्योंकि मेरी साइट पर एक पोस्ट किया गया है ("सेकंड्स, घंटों के बाद से, हफ्तों के बाद से, आदि ..") और मैं संग्रहीत दिनांक और utcnow के बीच डेटाटाइम.timedelta अंतर का उपयोग कर रहा हूं एक पद के लिए डेटाबेस में।पायथन का टाइमडेल्टा: क्या मैं अभी भी यूनिट में नहीं मिल सकता हूं, मैं पूरे अंतर का मूल्य चाहता हूं?

दस्तावेज़ों के मुताबिक, मुझे लगता है कि फैंसी डेट स्ट्रिंग्स प्राप्त करने के लिए मुझे दिन की विशेषता और सेकंड विशेषता का उपयोग करना होगा।

क्या मैं बस उस समय इकाई में नहीं मिल सकता जब मैं पूरे अंतर का मूल्य चाहता हूं? क्या मैं कुछ भूल रहा हूँ?

यह सही होगा अगर मैं सेकंड में पूरा अंतर प्राप्त कर सकूं।

उत्तर

21

ऐसा नहीं है कि लगता है पायथन 2.7 ने total_seconds() विधि पेश की है, जो आप खोज रहे थे, मुझे विश्वास है!

15

आप सेकंड में अंतर की गणना कर सकते हैं।

total_seconds = delta.days * 86400 + delta.seconds 

नहीं, आप "कुछ याद नहीं कर रहे हैं"। यह सेकंड में डेल्टा प्रदान नहीं करता है।

+0

मैं यही करने की योजना बना रहा हूं, लेकिन अगर मैं ऐसा कुछ नहीं जानता था तो मैं बस अपने कोड में उस कड़वाहट को नहीं चाहता था। धन्यवाद। –

+4

इच्छा है कि उनके पास timteltas पर .total_seconds, .total_minutes, आदि आदि हों ... –

+5

यह दृष्टिकोण, Python 2.7 में 'total_seconds()' की तरह, एक गलत परिणाम देगा यदि दिनों में 24 घंटे नहीं हैं (उदाहरण के लिए, क्योंकि डेलाइट सेविंग टाइम में बदलावों का)। – Bruno

5

यह सही होगा अगर मैं सेकंड में पूरा अंतर प्राप्त कर सकूं।

फिर 'समय' मॉड्यूल द्वारा प्रदान किए गए सादे-पुराने-यूनिक्स-टाइमस्टैम्प आपके स्वाद के लिए अधिक हो सकता है।

मुझे व्यक्तिगत रूप से अभी तक 'डेटटाइम' में जो कुछ भी है, उससे आश्वस्त होना बाकी है।

+0

+1 एक ऐसे समाधान का सुझाव देने के लिए जो यह नहीं मानता कि सभी दिनों में 24 घंटे हैं। – Bruno

5

तरह bobince कहा, तुम timestamps इस्तेमाल कर सकते हैं, इस तरह:

# assuming ts1 and ts2 are the two datetime objects 
from time import mktime 
mktime(ts1.timetuple()) - mktime(ts2.timetuple()) 

हालांकि मुझे लगता है कि होगा यह सिर्फ timedelta वस्तु से सेकंड की गणना से भी भद्दा है ...

+3

आप चीजों को और जटिल बना सकते हैं: 'कम करें (फ्लोट .__ सब__, (एमकेटाइम (डी .utctimetuple()) डी में (ts1, ts2))) – jfs

+0

@ जेएफ। सेबेस्टियन: लेकिन क्यों? – Claudiu

+0

क्या होगा यदि ts1 एक समय क्षेत्र में है और ts2 दूसरे में है? या, वे एक ही समय क्षेत्र में हैं लेकिन एक डेलाइट सेविंग टाइम में है और दूसरा नहीं है? –

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

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