본문 바로가기
파이썬

파이썬에서 날짜에서 n 일 빼기

by º기록 2020. 11. 19.
반응형


이것은 내 코드에서 발췌 한 것입니다.

import os, time
from datetime import datetime, timedelta

def processData1( pageFile ):
    f = open(pageFile, "r")
    page = f.read()
    filedate = time.strftime('%m/%d/%Y', time.gmtime(os.path.getmtime(pageFile)))
    print filedate
    end_date = filedate - datetime.timedelta(days=10)
    print end_date

filedate 인쇄가 작동하므로 파일에서 날짜를 올바르게 읽습니다. 작동하지 않는 것은 빼기 비트입니다.

원하는 출력 : filedate 가 06/11/2013 인 경우 print end_date 06/01/2013 을 산출해야합니다.

 

해결 방법

 


따라서 filedate 는 실제로 문자열입니다. + 또는 -에서 datetime.timedelta 를 얻으려고하면 오류가 발생합니다. 예 -

In [5]: s = time.strftime('%m/%d/%Y', time.gmtime(time.time()))

In [6]: s
Out[6]: '09/01/2015'

In [8]: s - datetime.timedelta(days=10)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-8-fb1d19ed0b02> in <module>()
----> 1 s - datetime.timedelta(days=10)

TypeError: unsupported operand type(s) for -: 'str' and 'datetime.timedelta'


그리고 원하는 최종 결과가 실제로 문자열 인 경우 datetime.strftime () 을 사용하여 필요한 형식의 문자열로 변환 할 수 있습니다. 예 -

import os
from datetime import datetime, timedelta

def processData1( pageFile ):
    f = open(pageFile, "r")
    page = f.read()
    filedate = datetime.utcfromtimestamp(os.path.getmtime(pageFile)))
    print filedate
    end_date = filedate - timedelta(days=10)
    print end_date   #end_date would be a datetime object.
    end_date_string = end_date.strftime('%m/%d/%Y')
    print end_date_string

 

참조 페이지 https://stackoverflow.com/questions/32334312

 

 

반응형

댓글