2015-01-26 6 views
5

में डेटाटाइम से पूर्णांक को कैसे परिवर्तित करें IYYY-MM-DD hh: mm: ss प्रारूप को पायथन में पूर्णांक में कैसे परिवर्तित कर सकते हैं? उदाहरण के लिए 2014-02-12 20:51:14 -> पूर्णांक के लिए। : mm: ss नहीं बल्कि yyyy-mm-dd hh: mm: ssपाइथन

def time_to_num(time_str): 
    hh, mm , ss = map(int, time_str.split(':')) 
    return ss + 60*(mm + 60*hh) 
+1

https://docs.python.org/2/library/datetime.html – user3467349

उत्तर

8

यह क्या पूर्णांक एन्कोड करने के लिए माना जाता है पर निर्भर करता है

मैं कैसे केवल hh कन्वर्ट करने के लिए पता है। आप पिछले कुछ समय से तारीख को कई मिलीसेकंड में परिवर्तित कर सकते हैं। लोग अक्सर 12:00 बजे जनवरी 1 9 70, या 1 9 00, आदि को चिपकते हैं, और उस बिंदु से मिलीसेकंड की पूर्णांक संख्या के रूप में समय मापते हैं। datetime मॉड्यूल (या इस तरह के अन्य) में ऐसे फ़ंक्शन होंगे जो आपके लिए ऐसा करते हैं; बस Google को मिलीसेकंड में परिवर्तित करने के लिए चारों ओर।

2012:

आप शब्दार्थ साल, महीना, और दिन, एक ही रास्ता यह करने के लिए सांकेतिक शब्दों में बदलना चाहते हैं क्रम के- परिमाण मूल्यों इतना बड़ा पूर्णांक अंक के भीतर उन्हें मुक़ाबला करने से उन घटकों गुणा करने के लिए है -06-13 -> 20120613 = 10.000 * (2012) + 100 * (6) + 1 * (13)

def to_integer(dt_time): 
    return 10000*dt_time.year + 100*dt_time.month + dt_time.day 

उदा

In [1]: import datetime 

In [2]: %cpaste 
Pasting code; enter '--' alone on the line to stop or use Ctrl-D. 
:def to_integer(dt_time): 
: return 10000*dt_time.year + 100*dt_time.month + dt_time.day 
: # Or take the appropriate chars from a string date representation. 
:-- 

In [3]: to_integer(datetime.date(2012, 6, 13)) 
Out[3]: 20120613 

यदि आप मिनट और सेकंड भी चाहते हैं, तो अंकों को प्रदर्शित करने के लिए आवश्यक परिमाण के आगे के आदेश शामिल करें।

मुझे विरासत प्रणाली में अक्सर इस दूसरी विधि का सामना करना पड़ा है, विशेष रूप से सिस्टम जो लीगेसी एसक्यूएल डेटाबेस से दिनांक-आधारित डेटा खींचते हैं।

यह बहुत खराब है। आप तारीखों को संरेखित करने के लिए बहुत सारे हैकी कोड लिखते हैं, कंप्यूटिंग महीने या दिन ऑफसेट्स के रूप में वे पूर्णांक प्रारूप में दिखाई देंगे (उदाहरण के लिए महीने को रीसेट करने के बाद, दिसंबर को पास करने के बाद, फिर वर्ष मूल्य में वृद्धि), और बॉयलर प्लेट के लिए पूरी तरह से पूर्णांक प्रारूप में और से कनवर्ट करना।

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

यह मूल्य है, जब तक आप संभवतः कर सकते हैं के लिए datetime.date की तरह एक तारीख संदर्भ में छोड़ने के लिए, तो यह है कि इस पर संचालन व्यक्त कर रहे हैं एक प्राकृतिक, दिनांक-आधारित संदर्भ में, और आम तौर पर काफी बेहतर है नहीं कुछ अकेला डेवलपर एक पूर्णांक में व्यक्तिगत हैक।