윈썸지니의 별책부록
메인화면
  • 분류 전체보기
    • IT 이야기 공간
      • 프로그램 언어
      • 데이터베이스
      • 운영체제
      • 오픈소스
    • 재테크 공간
      • 돈되는 알짜 정보
      • 편리한 생활정보
메인화면
  • 분류 전체보기
    • IT 이야기 공간
      • 프로그램 언어
      • 데이터베이스
      • 운영체제
      • 오픈소스
    • 재테크 공간
      • 돈되는 알짜 정보
      • 편리한 생활정보
블로그 내 검색

윈썸지니의 별책부록

재테크, 생활정보, 알짜정보, 경제정보, 금융정보등의 생활에 편리한 정보를 전달해드립니다.

  • IT 이야기 공간/프로그램 언어

    파이썬(python) 일자 계산, 날짜 비교, 요일 구하기

    2020. 8. 4.

    by. 윈썸지니

    반응형

    파이썬에서 자주 사용하는 날짜 형식에 대한 내용은 이전 포스팅에서 다루었습니다.

     

    datetime을 처음 접하시는 분이면 이전 포스팅을 먼저 참고해 주세요.

    [IT 이야기 공간/프로그램 언어] - 파이썬(python) 현재 날짜 시간 형식 포맷 변환 UTC datetime strfprint strprint

     

    파이썬(python) 현재 날짜 시간 형식 포맷 변환 UTC datetime strfprint strprint

    프로그램 개발 시 많이 사용되는 것 중에 하나가 날짜 형식 변환 및 계산등을 많이 사용합니다. 만약 2020/8/2 이런 문자열을 보면 사람은 2020년 8월 2일 이구나로 인식 하지만 프로그램에서는 2020 �

    jinisbonusbook.tistory.com

    이번 포스팅은 날짜 형식을 알고 있다는 전제하에 날짜 계산을 다루어 봅니다.

     

    날짜는 datetime 클래스, 계산은 timedelta 클래스를 사용하여 예제를 다룹니다.

    먼저  클래스를 import 합니다.

    >>> from datetime import datetime, timedelta

     

    ▶ 날짜 비교해 보기

    데이터 타입이 같아야 비교가 되겠지요?

    두개의 일자를 생성합니다. 그리고 그냥 비교 연산자를 사용하면 숫자 비교처럼 사용 할 수 있습니다.

    >>> now1 = datetime.now()

    >>> now2 = datetime.now()

    >>> now1

    datetime.datetime(2020, 8, 2, 23, 30, 41, 268399)

    >>> now2

    datetime.datetime(2020, 8, 2, 23, 30, 51, 819013)

    >>> now2 > now1

    True

     

    일자 계산을 하여 아래와 같이 비교 할 수도 있습니다.

    아래 예제는 두 날짜를 뺄셈하여 2일 보다 큰지 비교하는 예제 입니다.

    >>> d1 = datetime( 2020, 8, 2 )

    >>> d2 = datetime( 2020, 7, 31 )

    >>> d1 – d2 > timedelta( days = 2 )

    False

    >>> d1 – d2

    datetime.timedelta(days=2)

    >>> d1 – d2 > timedelta( days = 1 )

    True

     

    위의 예제에서 timedelta 를 사용하였고 또한 두 날짜를 뺄셈하니 결과 값을 timedelta 로 보여 줍니다.

    timedelta는 두 시간의 연산 할 때 사용합니다.

     

    아래와 같은 형식으로 사용됩니다.

    datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

     

    ▶ 두 날짜 차이 계산하기

    이번에는 시간까지 생성한 결과를 확인해 봅니다.

    다음 예제를 확인 합니다.  

    >>> d1 = datetime( 2020, 8, 2, 15, 30 , 30 )

    >>> d2 = datetime( 2020, 7, 30, 12, 23, 39)

    >>> d1 - d2

    datetime.timedelta(days=3, seconds=11211)

    >>> d3 = datetime.now()

    >>> d3 - d2

    datetime.timedelta(days=3, seconds=41284, microseconds=545060)

     

    위의 예제에서 보듯이 timedelta 값으로 반환을 해 줍니다.

     

    days, seconds, miliseconds로 표현을 해 줍니다.

    위의 예제에서 반환된 timedelta 에 접근하는 방법입니다.

    >>> x = d3 - d2

    >>> x.days

    3

    >>> x.seconds

    41284

    >>>

     

    초로 표현되는 것이 아쉽지만 계산하면 됩니다.  시간, 분으로 표현을 해 주고 싶다면 초를 시간과 분으로 계산하여 바꾸어 주면 됩니다.

     

    ▶ 날짜를 기준으로 특정 시간 구하기

    30일 전은 100% 환불, 20일 전은 80% 환불, 10일전은 50% 환불 3일전은 20% 환불, 1일전은 10% 환불 을 해 주어야 하는 프로그램일 개발 한다고 가정합니다.

    환불을 해 주어야 할 경우 특정일을 기준으로 80% 환불을 받기 위해서는 최대 몇일까지 취소 요청을 해야 할까요? 라고 하고 일자를  구해 봅니다.

     

    특정일은 2020.9.5일 이라고 가정합니다.

    아래 계산을 해 보니 2020년 8월 16일 까지는 취소를 해여 80% 환불을 받을 수 있다는 것을 알 수 있습니다.

    >>> datetime( 2020, 9, 5 ) – timedelta(days=20)

    datetime.datetime(2020, 8, 16, 0, 0)

    >>> datetime( 2020, 9, 5 ) + timedelta(days=-20)

    datetime.datetime(2020, 8, 16, 0, 0)

    >>>

     

    위의 예제는 같은 결과를 얻었습니다. 두가지 방식으로 사용 될 수 있습니다.

     

    현재로 부터 1일 15시간 이후의 시간을 구해 봅니다.

    >>> datetime.now() + timedelta( days=1, hours=15)

    datetime.datetime(2020, 8, 4, 15, 15, 32, 642547)

    >>>

     

    현재 시간으로 부터 2 주 후의 시간을 구해 봅니다.

    >>> datetime.now() + timedelta( weeks=2 )

    datetime.datetime(2020, 8, 17, 0, 16, 39, 528692)

    >>>

     

    timedelta의 인수로 days(일), hours(시), minutes(분), seconds(초), microseconds(마이크로 초), miliseconds(밀리 초), weeks(주 ) 을 사용 할 수 있습니다.

    값으로는 양수, 음수 를 사용 할 수 있습니다.

     

    ▶ 요일 구하기

    요일을 구하는 예제 입니다.

    weekday() 에서 숫자 0을 출력했는데 0 ~6 까지의 숫자이며, 월 ~일요일을 의미합니다.

    >>> x = datetime.now()

    >>> x

    datetime.datetime(2020, 8, 3, 0, 25, 18, 190425)

    >>>

    >>> x.weekday()

    0

    >>> x.strftime('%A')

    'Monday’

    반응형
    저작자표시 비영리 변경금지 (새창열림)

    'IT 이야기 공간 > 프로그램 언어' 카테고리의 다른 글

    파이썬(python) SSH client를 이용한 네트워크 장비, 리눅스 서버 통신 방법 - paramiko  (0) 2020.08.06
    파이썬(python) 티베로 DB 접속 방법 - ODBC  (0) 2020.08.05
    파이썬(python) 현재 날짜 시간 형식 포맷 변환 UTC datetime strfprint strprint  (0) 2020.08.03
    파이썬(python) 순환 로그 파일 저장 및 관리 logging  (0) 2020.08.02
    파이썬(python) 외부 파일을 통한 환경 설정관리 ConfigParser  (0) 2020.07.31

    이 글을 본 사람들도 관심있게 본 글

    • 파이썬(python) SSH client를 이용한 네트워크 장비, 리눅스 서버 통신 방법 - paramiko 2020.08.06
    • 파이썬(python) 티베로 DB 접속 방법 - ODBC 2020.08.05
    • 파이썬(python) 현재 날짜 시간 형식 포맷 변환 UTC datetime strfprint strprint 2020.08.03
    • 파이썬(python) 순환 로그 파일 저장 및 관리 logging 2020.08.02
Designed by Organic
블로그 이미지
윈썸지니

티스토리툴바