在Python中添加5天的日期

Mur*_*hna 322 python datetime date

我有一个约会"10/10/11(m-d-y)",我想使用Python脚本添加5天.请考虑一个适用于月末的一般解决方案.

我使用以下代码:

import re
from datetime import datetime

StartDate = "10/10/11"

Date = datetime.strptime(StartDate, "%m/%d/%y")
Run Code Online (Sandbox Code Playgroud)

print Date - >正在打印 '2011-10-10 00:00:00'

现在我想在这个日期添加5天.我使用了以下代码:

EndDate = Date.today()+timedelta(days=10)
Run Code Online (Sandbox Code Playgroud)

哪个返回了这个错误:

name 'timedelta' is not defined
Run Code Online (Sandbox Code Playgroud)

Bot*_*res 488

以前的答案是正确的,但这通常是一种更好的做法:

import datetime
Run Code Online (Sandbox Code Playgroud)

那么你将拥有,使用datetime.timedelta:

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

end_date = date_1 + datetime.timedelta(days=10)
Run Code Online (Sandbox Code Playgroud)

  • 像"从datetime import datetime,timedelta"导入将为代码添加可读性 (47认同)
  • 那里有长尾遗留问题.它应该是`from datetime import DateTime`,因为类是CamelCased,但是datetime在PEP8之前. (8认同)
  • @paulmorriss:你在`datetime`模块的`datetime`类中调用`strptime`方法,所以你需要指定`datetime.datetime`. (7认同)
  • datetime.datetime - 为什么两次? (6认同)
  • 我们是否都同意将常用类命名为包含它的模块的名称是一个愚蠢的想法?什么是`datetime`?你不能依赖惯例知道,但总是要看进口. (5认同)
  • 你也可以做`from datetime import datetime as DateTime, timedelta as TimeDelta`,所以你来了case并且导入模块`import datetime`避免名称冲突。 (3认同)
  • 不应该是`%m/%d/%Y`而不是`%m/%d/%y`吗? (2认同)
  • 在python3中,我必须执行“from datetime import datetime, timedelta”和“end_date = date_1 + timedelta(days=2)” (2认同)

DrT*_*rsa 103

timedelta先导入.

from datetime import timedelta, date
Run Code Online (Sandbox Code Playgroud)

date将返回今天的日期时间,可能是你想要的

EndDate = date.today() + timedelta(days=10)
Run Code Online (Sandbox Code Playgroud)

  • datetime.date.today()而不是Date.today() (10认同)
  • @ dan-klasson它对我不起作用,`date`对象没有`timedelta`方法。您正在使用哪个Python版本? (2认同)

fan*_*ous 16

如果你碰巧已经在使用pandas,你可以通过不指定格式来节省一点空间:

import pandas as pd
startdate = "10/10/2011"
enddate = pd.to_datetime(startdate) + pd.DateOffset(days=5)
Run Code Online (Sandbox Code Playgroud)

  • 只是想指出,仅仅为此安装 pandas 是严重矫枉过正的。 (2认同)

vst*_*stm 12

我猜你错过了这样的东西:

from datetime import timedelta
Run Code Online (Sandbox Code Playgroud)


Atu*_*ind 11

这是使用dateutil的relativedelta在日期上添加天数的另一种方法.

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')
Run Code Online (Sandbox Code Playgroud)

输出:

今天:25/06/2015 15:56:09

5天后:2015年6月30日15:56:09


Gur*_*lik 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)
Run Code Online (Sandbox Code Playgroud)

用法:

addDays = 3 #days
output_format = '%d-%m-%Y'
output = get_date(output_format, addDays)
print output
Run Code Online (Sandbox Code Playgroud)


小智 9

如果您想现在添加日期,可以使用此代码

from datetime import datetime
from datetime import timedelta


date_now_more_5_days = (datetime.now() + timedelta(days=5) ).strftime('%Y-%m-%d')
Run Code Online (Sandbox Code Playgroud)


tot*_*ico 5

为了使代码更简洁,并避免datetime和datetime.datetime之间的名称冲突 ,您应该使用CamelCase名称重命名这些类.

from datetime import datetime as DateTime, timedelta as TimeDelta
Run Code Online (Sandbox Code Playgroud)

所以你可以做到以下几点,我认为它更清楚.

date_1 = DateTime.today() 
end_date = date_1 + TimeDelta(days=10)
Run Code Online (Sandbox Code Playgroud)

此外,如果您想稍后再进行,则不存在名称冲突import datetime.


Pra*_*ash 5

这可能有帮助:

from datetime import date, timedelta
date1 = date(2011, 10, 10)
date2 = date1 + timedelta(days=5)
print (date2)
Run Code Online (Sandbox Code Playgroud)

  • 您还可以执行“date1 += timedelta(days=5)”。 (2认同)