Python에서 날짜에 날짜 추가
있어"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
이전 답변은 맞지만 일반적으로 다음과 같은 작업을 수행하는 것이 좋습니다.
import datetime
그 후, 다음과 같은 기능을 사용할 수 있습니다.
date_1 = datetime.datetime.strptime(start_date, "%m/%d/%y")
end_date = date_1 + datetime.timedelta(days=10)
★★★timedelta
★★★★★★★★★★★★★★★★★」date
번째
from datetime import timedelta, date
★★★★★★★★★★★★★★★★★.date.today()
시간이 일 수도 있습니다.
EndDate = date.today() + timedelta(days=10)
팬더를 이미 사용하고 있는 경우는, 포맷을 지정하지 않는 것으로, 약간의 공간을 절약할 수 있습니다.
import pandas as pd
startdate = "10/10/2011"
enddate = pd.to_datetime(startdate) + pd.DateOffset(days=5)
이것은 도움이 될 수 있습니다.
from datetime import date, timedelta
date1 = date(2011, 10, 10)
date2 = date1 + timedelta(days=5)
print (date2)
날짜를 지금 추가하려면 이 코드를 사용할 수 있습니다.
from datetime import datetime
from datetime import timedelta
date_now_more_5_days = (datetime.now() + timedelta(days=5) ).strftime('%Y-%m-%d')
여기 다테틸의 상대적인 벨타를 사용하여 날짜에 날짜를 추가하는 또 다른 방법이 있습니다.
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')
출력:
오늘 : 2015년 6월 25일 15:56:09
5일 후 : 2015년 6월 30일 15:56:09
당신은 그런 걸 놓치고 있는 것 같군요.
from datetime import timedelta
지금부터 + 지정 일수를 취득하는 함수입니다.
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
datetime과 datetime.datetime 간의 이름 충돌을 방지하려면 클래스 이름을 CamelCase 이름으로 변경해야 합니다.
from datetime import datetime as DateTime, timedelta as TimeDelta
그래서 다음과 같이 할 수 있습니다. 더 명확하다고 생각합니다.
date_1 = DateTime.today()
end_date = date_1 + TimeDelta(days=10)
또한, 당신이 원한다면 이름 경합은 없을 것입니다.import datetime
★★★★★★★★★★★★★★★★★★.
이것을 시험해 보세요.
현재 날짜에 5일 추가.
from datetime import datetime, timedelta
current_date = datetime.now()
end_date = current_date + timedelta(days=5) # Adding 5 days.
end_date_formatted = end_date.strftime('%Y-%m-%d')
print(end_date_formatted)
현재 날짜에서 5일을 뺍니다.
from datetime import datetime, timedelta
current_date = datetime.now()
end_date = current_date + timedelta(days=-5) # Subtracting 5 days.
end_date_formatted = end_date.strftime('%Y-%m-%d')
print(end_date_formatted)
를 사용합니다.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
일반적으로 지금은 답이 없지만 내가 만든 수업도 도움이 될 거야.제 경우 Pyhon 프로젝트에서 겪었던 모든 요구 사항을 해결합니다.
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)
사용방법
self.tz = pytz.timezone("Europe/Warsaw")
합니다. - 프로 、 프 - 、 - - - - 。GetDate("2019-08-08").current()
- 1pt 1에서 을 사용하여 를 시간 은 본 、 음 、 음 、 음 、 음 default default default default default default default default 。format="%Y-%m-%d"
수.(예: 변경해 주세요.)GetDate("2019-08-08 08:45", format="%Y-%m-%d %H:%M").current()
)GetDate("2019-08-08").get_month_first_day()
된 날짜 객체)합니다.GetDate("2019-08-08").get_month_last_day()
을GetDate("2019-08-08").minimum_time()
시작 합니다.GetDate("2019-08-08").maximum_time()
합니다.GetDate("2019-08-08").time_delta_days({number_of_days})
날짜를 하고 {of days}를 추가합니다 "number of days" {number of days}는 호출할 도 있습니다).GetDate(timezone.now()).time_delta_days(-1)
★★★★★★★★★★★★★★★★」GetDate("2019-08-08").time_delta_haours({number_of_hours})
과GetDate("2019-08-08").time_delta_seconds({number_of_seconds})
7에 작업합니다.
경우에 따라서는 날짜 및 날짜를 기준으로 검색할 필요가 있습니다.를 사용하는 date__range
그러면 하루 더해서to_date
그렇지 않으면 queryset이 비워집니다.
예제:
from datetime import timedelta
from_date = parse_date(request.POST['from_date'])
to_date = parse_date(request.POST['to_date']) + timedelta(days=1)
attendance_list = models.DailyAttendance.objects.filter(attdate__range = [from_date, to_date])
나는 이미 판다의 예를 보았지만, 여기에 당신이 직접 데이 클래스를 가져올 수 있는 반전이 있습니다.
from pandas.tseries.offsets import Day
date1 = datetime(2011, 10, 10)
date2 = date1 + 5 * Day()
우연히 이런 오래된 실마리를 발견했어요
확인해보니 답변이 대부분 같습니다.이 두 가지 답변이 마음에 들었기 때문에 이 두 가지 접근방식의 효율성을 확인하려고 합니다.
첫 번째 접근법: Date Time 모듈을 사용한 두 번째 접근법: 판다의 라이브러리 사용
그래서 약 10,000번 정도 테스트를 했는데 판다 도서관 방식이 훨씬 느렸다.따라서 내장된 Date Time 모듈을 사용하는 것이 좋습니다.
from datetime import date, timedelta
import pandas as pd
import timeit
def using_datetime():
pre_date = date(2013, 10, 10)
day_date = pre_date + timedelta(days=5)
return day_date
def using_pd():
start_date = "10/10/2022"
pd_date = pd.to_datetime(start_date)
end_date = pd_date + pd.DateOffset(days=5)
return end_date
for func in [using_datetime, using_pd]:
print(f"{func.__name__} Time Took: ", timeit.timeit(stmt=func, number=10000))
# Output
# using_datetime Time Took: 0.009390000021085143
# using_pd Time Took: 2.1051381999859586
class myDate:
def __init__(self):
self.day = 0
self.month = 0
self.year = 0
## for checking valid days month and year
while (True):
d = int(input("Enter The day :- "))
if (d > 31):
print("Plz 1 To 30 value Enter ........")
else:
self.day = d
break
while (True):
m = int(input("Enter The Month :- "))
if (m > 13):
print("Plz 1 To 12 value Enter ........")
else:
self.month = m
break
while (True):
y = int(input("Enter The Year :- "))
if (y > 9999 and y < 0000):
print("Plz 0000 To 9999 value Enter ........")
else:
self.year = y
break
## method for aday ands cnttract days
def adayDays(self, n):
## aday days to date day
nd = self.day + n
print(nd)
## check days subtract from date
if nd == 0: ## check if days are 7 subtracted from 7 then,........
if(self.year % 4 == 0):
if(self.month == 3):
self.day = 29
self.month -= 1
self.year = self. year
else:
if(self.month == 3):
self.day = 28
self.month -= 1
self.year = self. year
if (self.month == 5) or (self.month == 7) or (self.month == 8) or (self.month == 10) or (self.month == 12):
self.day = 30
self.month -= 1
self.year = self. year
elif (self.month == 2) or (self.month == 4) or (self.month == 6) or (self.month == 9) or (self.month == 11):
self.day = 31
self.month -= 1
self.year = self. year
elif(self.month == 1):
self.month = 12
self.year -= 1
## nd == 0 if condition over
## after subtract days to day io goes into negative then
elif nd < 0 :
n = abs(n)## return positive if no is negative
for i in range (n,0,-1): ##
if self.day == 0:
if self.month == 1:
self.day = 30
self.month = 12
self.year -= 1
else:
self.month -= 1
if(self.month == 1) or (self.month == 3)or (self.month == 5) or (self.month == 7) or (self.month == 8) or (self.month == 10) or (self.month ==12):
self.day = 30
elif(self.month == 4)or (self.month == 6) or (self.month == 9) or (self.month == 11):
self.day = 29
elif(self.month == 2):
if(self.year % 4 == 0):
self.day == 28
else:
self.day == 27
else:
self.day -= 1
## enf of elif negative days
## adaying days to DATE
else:
cnt = 0
while (True):
if self.month == 2: # check leap year
if(self.year % 4 == 0):
if(nd > 29):
cnt = nd - 29
nd = cnt
self.month += 1
else:
self.day = nd
break
## if not leap year then
else:
if(nd > 28):
cnt = nd - 28
nd = cnt
self.month += 1
else:
self.day = nd
break
## checking month other than february month
elif(self.month == 1) or (self.month == 3) or (self.month == 5) or (self.month == 7) or (self.month == 8) or (self.month == 10) or (self.month == 12):
if(nd > 31):
cnt = nd - 31
nd = cnt
if(self.month == 12):
self.month = 1
self.year += 1
else:
self.month += 1
else:
self.day = nd
break
elif(self.month == 4) or (self.month == 6) or (self.month == 9) or (self.month == 11):
if(nd > 30):
cnt = nd - 30
nd = cnt
self.month += 1
else:
self.day = nd
break
## end of month condition
## end of while loop
## end of else condition for adaying days
def formatDate(self,frmt):
if(frmt == 1):
ff=str(self.day)+"-"+str(self.month)+"-"+str(self.year)
elif(frmt == 2):
ff=str(self.month)+"-"+str(self.day)+"-"+str(self.year)
elif(frmt == 3):
ff =str(self.year),"-",str(self.month),"-",str(self.day)
elif(frmt == 0):
print("Thanky You.....................")
else:
print("Enter Correct Choice.......")
print(ff)
dt = myDate()
nday = int(input("Enter No. For Aday or SUBTRACT Days :: "))
dt.adayDays(nday)
print("1 : day-month-year")
print("2 : month-day-year")
print("3 : year-month-day")
print("0 : EXIT")
frmt = int (input("Enter Your Choice :: "))
dt.formatDate(frmt)
언급URL : https://stackoverflow.com/questions/6871016/adding-days-to-a-date-in-python
'programing' 카테고리의 다른 글
Mac OS X Yosemite/El Capitan에서 MySQL Server 자동 부팅 (0) | 2022.10.22 |
---|---|
전처리 후 gcc가 C코드를 출력할 수 있습니까? (0) | 2022.10.22 |
Python은 클래스에 "개인" 변수를 가지고 있습니까? (0) | 2022.10.22 |
Java가 이미지를 버퍼 이미지로 변환 (0) | 2022.10.22 |
python 요청 시간 초과.전체 응답 가져오기 (0) | 2022.10.22 |