python字符串到datetime,找到昨天然后回到字符串

时间:2013-09-17 18:23:58

标签: python datetime

我正在尝试执行以下操作:

  1. 从文件中读取日期(日期格式为%Y-%m-%d)
  2. 将字符串转换为日期时间obj(我用strptime执行此操作)
  3. 之前的日期添加到日期时间
  4. 将前一天(look_back)转换回带有给定的字符串 格式
  5. 步骤1& 2不是问题,我完成了这样的事情:

    import datetime
    from datetime import timedelta
    import time
    
    now = datetime.datetime.now() #checks current datetime
    
    ### READ LAST RUN DATETIME ###
    try:
        test = open("last_settings.ini", "r") #opens file in read mode
        print "Name of the file: ", test.name
    
        last_run = test.read(10); # just reads the date
        print "Program was last run: %s" % last_run
        test.close()
        firstRun = 'False'
    except:
        print "Settings file does not exist"
        #test = open("last_settings.ini", "w+") #creates the file
        #test.close()
    
        #first_run = 'True'
        #look_back = str(now-timedelta(days=14)) #sets initial lookBack date of two weeks
        #print "Pulling down all paid invoices from date " + look_back
    
    
    ### 24 hour lookback ###
    look_back = time.strptime(last_run, "%Y-%m-%d")
    

    但是,我尝试获取发布日期之前的日期(上面的#3)的每种方法都会引发错误。我的代码:

    look_back = look_back-timedelta(days=1)
    

    错误:

    look_back = look_back-timedelta(days=1)
    TypeError: unsupported operand type(s) for -: 'time.struct_time' and 'datetime.timedelta'
    

    有关于如何做到这一点的想法吗?

1 个答案:

答案 0 :(得分:3)

datetime.datetime个对象也有<{3}}

read_date = datetime.datetime.strptime(last_run, '%Y-%m-%d')
previous_day = read_date - datetime.timedelta(days=1)
formatted_previous_day = previous_day.strftime('%Y-%m-%d')