पाइथन में डेट में 5 दिन जोड़ना


366

मेरे पास एक तारीख है "10/10/11(m-d-y)"और मैं इसे पायथन स्क्रिप्ट का उपयोग करके 5 दिन जोड़ना चाहता हूं। कृपया एक सामान्य समाधान पर विचार करें जो महीने पर काम करता है।

मैं निम्नलिखित कोड का उपयोग कर रहा हूं:

import re
from datetime import datetime

StartDate = "10/10/11"

Date = datetime.strptime(StartDate, "%m/%d/%y")

print Date -> छप रहा है '2011-10-10 00:00:00'

अब मैं इस तारीख में 5 दिन जोड़ना चाहता हूं। मैंने निम्नलिखित कोड का उपयोग किया:

EndDate = Date.today()+timedelta(days=10)

जिसने यह त्रुटि लौटा दी:

name 'timedelta' is not defined

12
सामान्य सुराग: यदि आपको त्रुटि मिलती है name 'timedelta' is not defined, तो इसका मतलब है कि आपने timedeltaकहीं भी परिभाषित नहीं किया है। पायथन आमतौर पर अपने त्रुटि संदेशों के बारे में बहुत जानकारीपूर्ण है।
कैट्रील जूल

1
काम नहीं किया? इन सभी कोड उदाहरणों में मदद मिली होगी: stackoverflow.com/search?q=python+timedelta । इस तरह से 200 से अधिक प्रश्न दिखाई देते हैं।
S.Lott


9
आप पांच दिन जोड़ना चाहते हैं, लेकिन फिर आपके पास समयसीमा (दिन = 10) है ... मैं उलझन में हूं कि 10 कहां से आए और यह 5 क्यों नहीं है
FeifanZ

जवाबों:


556

पिछले उत्तर सही हैं, लेकिन यह आमतौर पर एक बेहतर अभ्यास है:

import datetime

तो आप का उपयोग करेंगे datetime.timedelta:

date_1 = datetime.datetime.strptime(start_date, "%m/%d/%y")

end_date = date_1 + datetime.timedelta(days=10)

7
datetime.datetime - दो बार क्यों?
पॉलमोरिस

59
"डेटाइम इंपोर्ट डेटटाइम से टाइमटाइम" की तरह आयात करने से कोड में पठनीयता बढ़ जाएगी
Manel Clos

8
@paulmorriss: आप मॉड्यूल में वर्ग strptimeपर विधि को बुला रहे हैं , इसलिए आपको निर्दिष्ट करने की आवश्यकता है । datetimedatetimedatetime.datetime
ग्रीम पेरो

6
क्या हम सभी सहमत हो सकते हैं कि आमतौर पर उपयोग किए जाने वाले वर्ग का नामकरण उसी मॉड्यूल के रूप में किया जाता है जिसमें यह एक गूंगा विचार है? क्या है datetime? आप जानने के लिए सम्मेलन पर भरोसा नहीं कर सकते हैं, लेकिन हमेशा आयात को देखना होगा।
जिओनीज चामिओसोव

8
लंबी पूंछ विरासत की समस्या है। यह "होना चाहिए" from datetime import DateTimeक्योंकि कैमल कैडेड हैं, लेकिन डेटाइम प्रीपीपी 8 है।
एरोन मैकमिलिन

120

आयात timedeltaऔर dateपहला।

from datetime import timedelta, date

और date.today()आज का डेटटाइम वापस कर देंगे, हो सकता है कि आप चाहें

EndDate = date.today() + timedelta(days=10)

11
डेटटाइम.डेट.टोडे () की जगह डेट.ऑडे ()
एल्सडेक

2
@ दान-क्लैप्सन यह मेरे लिए काम नहीं करता है, dateवस्तु timedeltaविधि नहीं है । आप किस पायथन संस्करण का उपयोग कर रहे हैं?
DrTyrsa

@DrTyrsa मेरा बुरा। होना चाहिए:from datetime import timedelta, date; date.today() + timedelta(days=10)
dan-klasson

21

यदि आप पहले से ही पांडा का उपयोग कर रहे हैं , तो आप प्रारूप को निर्दिष्ट नहीं करके थोड़ी जगह बचा सकते हैं:

import pandas as pd
startdate = "10/10/2011"
enddate = pd.to_datetime(startdate) + pd.DateOffset(days=5)

मेरे लिए ठीक काम किया। धन्यवाद
रेनी

12

मुझे लगता है कि आप ऐसा कुछ याद कर रहे हैं:

from datetime import timedelta

12

खजूर के रिलेटेडवैल्टा का उपयोग करके तारीख पर दिन जोड़ने का एक और तरीका यहां दिया गया है ।

from datetime import datetime
from dateutil.relativedelta import relativedelta

print 'Today: ',datetime.now().strftime('%d/%m/%Y %H:%M:%S') 
date_after_month = datetime.now()+ relativedelta(days=5)
print 'After 5 Days:', date_after_month.strftime('%d/%m/%Y %H:%M:%S')

आउटपुट:

आज: 25/06/2015 15:56:09

5 दिनों के बाद: 30/06/2015 15:56:09


10

यदि आप अभी दिन जोड़ना चाहते हैं, तो आप इस कोड का उपयोग कर सकते हैं

from datetime import datetime
from datetime import timedelta


date_now_more_5_days = (datetime.now() + timedelta(days=5) ).strftime('%Y-%m-%d')

9

यहाँ अब + निर्दिष्ट दिनों से प्राप्त करने का एक कार्य है

import datetime

def get_date(dateFormat="%d-%m-%Y", addDays=0):

    timeNow = datetime.datetime.now()
    if (addDays!=0):
        anotherTime = timeNow + datetime.timedelta(days=addDays)
    else:
        anotherTime = timeNow

    return anotherTime.strftime(dateFormat)

उपयोग:

addDays = 3 #days
output_format = '%d-%m-%Y'
output = get_date(output_format, addDays)
print output

1
अच्छा कोड है। लेकिन get_date में AddDays का परीक्षण करने के लिए आपका IF आवश्यक नहीं है
Eduardo

6

आदेश में एक है रखने के लिए कोड वर्बोज़ कम , और से बचने के नाम संघर्ष datetime और datetime.datetime के बीच , आप के साथ वर्गों का नाम बदलने चाहिए केमलकेस नाम।

from datetime import datetime as DateTime, timedelta as TimeDelta

तो आप निम्न कार्य कर सकते हैं, जो मुझे लगता है कि यह स्पष्ट है।

date_1 = DateTime.today() 
end_date = date_1 + TimeDelta(days=10)

इसके अलावा, कोई नाम संघर्ष नहीं होगा यदि आप import datetimeबाद में चाहते हैं ।


0

का उपयोग करते हुए timedeltaरों आप कर सकते हैं:

import datetime
today=datetime.date.today()


time=datetime.time()
print("today :",today)

# One day different .
five_day=datetime.timedelta(days=5)
print("one day :",five_day)
#output - 1 day , 00:00:00


# five day extend .
fitfthday=today+five_day
print("fitfthday",fitfthday)


# five day extend .
fitfthday=today+five_day
print("fitfthday",fitfthday)
#output - 
today : 2019-05-29
one day : 5 days, 0:00:00
fitfthday 2019-06-03

0

आम तौर पर अब आप एक जवाब भूल गए हैं, लेकिन शायद मेरी बनाई हुई कक्षा भी सहायक होगी। मेरे लिए यह मेरी सभी आवश्यकताओं को हल करता है जो मैंने कभी अपने पायोन परियोजनाओं में की थी।

class GetDate:
    def __init__(self, date, format="%Y-%m-%d"):
        self.tz = pytz.timezone("Europe/Warsaw")

        if isinstance(date, str):
            date = datetime.strptime(date, format)

        self.date = date.astimezone(self.tz)

    def time_delta_days(self, days):
        return self.date + timedelta(days=days)

    def time_delta_hours(self, hours):
        return self.date + timedelta(hours=hours)

    def time_delta_seconds(self, seconds):
        return self.date + timedelta(seconds=seconds)

    def get_minimum_time(self):
        return datetime.combine(self.date, time.min).astimezone(self.tz)

    def get_maximum_time(self):
        return datetime.combine(self.date, time.max).astimezone(self.tz)

    def get_month_first_day(self):
        return datetime(self.date.year, self.date.month, 1).astimezone(self.tz)

    def current(self):
        return self.date

    def get_month_last_day(self):
        lastDay = calendar.monthrange(self.date.year, self.date.month)[1]
        date = datetime(self.date.year, self.date.month, lastDay)
        return datetime.combine(date, time.max).astimezone(self.tz)

इसका इस्तेमाल कैसे करें

  1. self.tz = pytz.timezone("Europe/Warsaw") - यहां आप प्रोजेक्ट में जिस टाइम जोन का इस्तेमाल करना चाहते हैं, उसे परिभाषित करते हैं
  2. GetDate("2019-08-08").current()- यह आपकी स्ट्रिंग तिथि को समय-समय पर ज्ञात वस्तु के साथ बदल देगा, जिसे आपने पीटी 1 में परिभाषित किया है। डिफ़ॉल्ट स्ट्रिंग प्रारूप है, format="%Y-%m-%d"लेकिन इसे बदलने के लिए स्वतंत्र महसूस करें। (उदाहरण। GetDate("2019-08-08 08:45", format="%Y-%m-%d %H:%M").current())
  3. GetDate("2019-08-08").get_month_first_day() दिए गए दिनांक (स्ट्रिंग या ऑब्जेक्ट) महीने पहले दिन
  4. GetDate("2019-08-08").get_month_last_day() पिछले महीने दिया गया रिटर्न
  5. GetDate("2019-08-08").minimum_time() दिए गए दिन की शुरुआत रिटर्न
  6. GetDate("2019-08-08").maximum_time() दिन के अंत में दिया गया रिटर्न
  7. GetDate("2019-08-08").time_delta_days({number_of_days})दी गई तारीखों को वापस जोड़ें + दिन की संख्या} (आप कॉल भी कर सकते हैं: GetDate(timezone.now()).time_delta_days(-1)कल के लिए)
  8. GetDate("2019-08-08").time_delta_haours({number_of_hours}) पीटी 7 के समान लेकिन घंटे पर काम करना
  9. GetDate("2019-08-08").time_delta_seconds({number_of_seconds}) पीटी 7 के समान लेकिन सेकंड पर काम करना

0

कुछ समय हमें डेट और डेट से खोज का उपयोग करने की आवश्यकता है। अगर हम date__range का उपयोग करते हैं तो हमें 1 दिन to_date के साथ जोड़ने की आवश्यकता है अन्यथा क्वेरी खाली हो जाएगी।

उदाहरण:

डेटाटाइम आयात से समयबद्धता

from_date = parse_date (request.POST ['from_date'])

to_date = parse_date (request.POST ['to_date']) + समयसीमा (दिन = 1)

अटेंडेंस_लिस्ट = मॉडल।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.