2012-03-17 14 views
12

मैं अजगर में एक मॉड्यूल बना रहा हूं, जिसमें मुझे 20120213 जैसे पूर्णांक प्रारूप में दिनांक प्राप्त हो रहा है, जो 13 फरवरी, 2012 को दर्शाता है। अब, मैं इस पूर्णांक स्वरूपित दिनांक को एक अजगर दिनांक वस्तु में परिवर्तित करना चाहता हूं।पूर्णांक को तिथि ऑब्जेक्ट पायथन में कैसे परिवर्तित करें?

इसके अलावा, यदि कोई ऐसा माध्यम है जिसके द्वारा मैं इस प्रारूप में दिनांक मूल्य को उसी प्रारूप में दिनांक मान प्राप्त करने के लिए इतनी पूर्णांक स्वरूपित तिथि में घटा सकता/जोड़ सकता हूं? 20120213 से 30 दिनों को घटाकर 20120114 के रूप में उत्तर प्राप्त करें?

उत्तर

13

मैं रूपांतरण के लिए निम्नलिखित सरल दृष्टिकोण सुझाव है:

date += timedelta(days=10) 
date -= timedelta(days=5) 
:

from datetime import datetime, timedelta 
s = "20120213" 
# you could also import date instead of datetime and use that. 
date = datetime(year=int(s[0:4]), month=int(s[4:6]), day=int(s[6:8])) 

जोड़ने/दिनों की एक आर्बिटरी राशि (। सेकंड भी btw काम करते हैं) को घटाकर लिए, आप निम्न कर सकता है

और का उपयोग कर वापस परिवर्तित:

s = date.strftime("%Y%m%d") 

कनव के लिए ईआरटी सुरक्षित रूप से एक स्ट्रिंग के लिए पूर्णांक, का उपयोग करें:

s = "{0:-08d}".format(i) 

यह सुनिश्चित करता है कि आपके स्ट्रिंग आठ charecters लंबे और बाएं गद्देदार शून्यों के साथ है, भले ही साल से छोटी 1000 (नकारात्मक साल हालांकि हास्यास्पद बन सकता है) है।

आगे संदर्भ: datetime objects, timedelta objects

+0

thnx :) हैप्पी कोडिंग ... – Uday0119

+0

लेकिन जो मैं प्राप्त कर रहा हूं वह एक स्ट्रिंग नहीं है। इसका एक पूर्णांक – Uday0119

+1

अच्छी तरह से कठिन नहीं है, आप स्ट्रिंग में पूर्णांक को परिवर्तित करने के लिए str (x) का उपयोग कर सकते हैं। – Peter

14

यह सवाल पहले से ही उत्तर है, लेकिन इस सवाल को देखकर दूसरों के हित के लिए मैं निम्नलिखित सुझाव जोड़ना चाहते हैं: करने के बजाय कर रही है अपने आप को टुकड़ा करने की क्रिया के रूप में आप ऊपर सुझाव स्ट्रिपटाइम() का भी उपयोग कर सकता है जो (IMHO) पढ़ने में आसान है और शायद इस रूपांतरण को करने का पसंदीदा तरीका है।

import datetime 
s = "20120213" 
s_datetime = datetime.datetime.strptime(s, '%Y%m%d') 
2

यहाँ क्या मेरा मानना ​​है कि (, अजगर 3 प्रकार संकेत के साथ) सवाल का जवाब है:

from datetime import date 


def int2date(argdate: int): 
    """ 
    If you have date as an integer, use this method to obtain a datetime.date object. 

    Parameters 
    ---------- 
    argdate : int 
     Date as a regular integer value (example: 20160618) 

    Returns 
    ------- 
    dateandtime.date 
     A date object which corresponds to the given value `argdate`. 
    """ 
    year = int(argdate/10000) 
    month = int((argdate % 10000)/100) 
    day = int(argdate % 100) 

    return date(year, month, day) 


print(intdate2date(20160618)) 

कोड ऊपर की उम्मीद 2016-06-18 पैदा करता है।

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

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