본문 바로가기
SW 개발/Python

Python: 날짜와 시간 처리 함수(현재 날짜, 어제 날짜, UTC 시간)

by Kibua20 2020. 11. 30.

Python에서 날짜와 시간을 처리하는 datetime 모듈을 제공합니다. 

 

현재 날짜와 시간 구하기

import datetime

today =datetime.datetime.now()

  → 2020-11-29 21:21:22.933386

 

d1 = today.strftime("%Y%m%d")

  → 20201129

 

어제  날짜와 시간 

import datetime

today =datetime.datetime.now()

 → 2020-11-29 21:21:22.933386

 

yesterday = today - datetime.timedelta(1)

 → 2020-11-28 21:21:22.933386

 

d2 = yesterday.strftime("%Y%m%d")

  → 20201129

 

timedelta 함수 (출처: Ptyhon 공식 매뉴얼)

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

모든 인자는 선택적이며 기본값은 0입니다. 인자는 정수나 부동 소수점 수일 수 있으며, 양수나 음수일 수 있습니다.

days, seconds  microseconds만 내부적으로 저장됩니다. 인자는 이 단위로 변환됩니다:

 

  • 밀리 초는 1000마이크로초로 변환됩니다.
  • 분은 60초로 변환됩니다
  • 시간은 3600초로 변환됩니다.
  • 주는 7일로 변환됩니다.

 

그런 다음 days, seconds 및 microseconds를 다음처럼 정규화하여 표현이 고유하도록 만듭니다

  • 0 <= microseconds < 1000000
  • 0 <= seconds < 3600*24 (하루 내의 초 수)
  • -999999999 <= days <= 999999999

strformate() 함수 (출처: Ptyhon 공식 매뉴얼)

strformat() 함수는 날짜와 시간을 다양한 포맷으로 표시 가능합니다.

지시자 의미 예제
%a  (%A) 요일 이름(전체 요일) Sun (Sunday)
%d 날짜를 0으로 채워진 10진수로 표시 01, 02, …, 31
%b  %B 월을 표시 (전체 월을 표시) Jan (January)
%m 월을 0으로 채워진 10진수로. 01, 02, …, 12
%y  (%Y) year를 0으로 채워진 10진수로. 20 (2020)
%H 시(24시간제)를 0으로 채워진 십진수로. 00, 01, …, 23
%I 시(12시간제)를 0으로 채워진 십진수로. 01, 02, …, 12
%M 분을 0으로 채워진 십진수로. 00, 01, …, 59
%S 초를 0으로 채워진 10진수로. 00, 01, …, 59
%f 마이크로초를 왼쪽에 0으로 채워진 십진수로. 000000, 000001, …, 999999
%z ±HHMM[SS[.ffffff]] 형태의 UTC 오프셋 (객체가 나이브하면 빈 문자열). (비어 있음), +0000, -0400, +1030, +063415, -030712.345216
%Z 시간대 이름 (객체가 나이브하면 빈 문자열). (비어 있음), UTC, EST, CST
%j 연중 일(day of the year)을 0으로 채워진 십진수로. 001, 002, …, 366
%U 연중 주 번호(일요일이 주의 시작)를 0으로 채워진 10진수로. 첫 번째 일요일에 선행하는 새해의 모든 날은 주 0으로 간주합니다. 00, 01, …, 53
%W 연중 주 번호(월요일이 주의 시작)를 십진수로. 첫 번째 월요일에 선행하는 새해의 모든 말은 주 0으로 간주합니다. 00, 01, …, 53
%c 로케일의 적절한 날짜와 시간 표현. Tue Aug 16 21:30:00 1988 (en_US);
Di 16 Aug 21:30:00 1988 (de_DE)
%x 로케일의 적절한 날짜 표현. 08/16/88 (None);
08/16/1988 (en_US);
16.08.1988 (de_DE)
%X 로케일의 적절한 시간 표현. 21:30:00 (en_US);
21:30:00 (de_DE)
%% 리터럴 '%' 문자. %

 

UTC (Coordinated Universal Time ) 기준 시간

UTC는 '협정 세계 표준시'로 1972년 1월 1일부터 시행된 국제 표준시입니다. 시간을 저장할 때 지역별 차이를 고려하기 위해서는 UTC 기준 시간으로 처리하는 것이 좋습니다.  특히 서버나 애플리케이션이 여러 지역에 배포하는 경우에는 동일한 기준인 UTC를 값을 사용 DB에 저장해야 시차에 따른 오류가 없습니다.

 

 

kstnow = datetime.datetime.now()

2020-11-30 21:52:11.771790  (Local 시간)

 

utcnow = datetime.datetime.utcnow()

2020-11-30 12:52:11.771800

 

import datetime

today =datetime.datetime.now()
yesterday = today - datetime.timedelta(1)

print (today)
print (yesterday)

d1 = today.strftime("%a%y%m%d")
d2 = yesterday.strftime("%a%A%y%m%d")

print (d2)

now = datetime.datetime.now()
print (now)

now = datetime.datetime.utcnow()
print (now)

#실행 결과#
## 2020-11-30 21:52:11.771696
## 2020-11-29 21:52:11.771696
## SunSunday201129
## 2020-11-30 21:52:11.771790
## 2020-11-30 12:52:11.771800

 

관련 글

[모바일 SW 개발/Python] - Python: xmltodict를 활용하여 XML를 JSON으로 변환하는 방법

[모바일 SW 개발/REST API] - 공공 데이터 Open API 사용법: 코로나 확진자 현황 API (sample code)

[개발환경/Google Cloud Platform] - IP Address CIDR 표현법과 사용 예

[모바일 SW 개발/Python] - Python 명령어 처리: Argparse 모듈 (ArgumentParser 사용 예제)

[모바일 SW 개발/Python] - Python에서 사용자 입력 받는 방법: input()

[모바일 SW 개발/Android] - Android에서 Python 실행 (SL4A와 Termux 활용)

[모바일 SW 개발/Python] - Python: JSON 개념과 json 모듈 사용법

[모바일 SW 개발/Python] - Python Error: #!/usr/bin/env python3: 그런 파일이나 디렉터리가 없습니다 (No such file or directory)

[개발환경/Web Server] - Python: Web Framework Flask 사용하기

[모바일 SW 개발/Python] - 파이썬으로 Apk Download 자동화: Selenium기반의 Apk 크롤러

[모바일 SW 개발/Python] - Python code 숨기는 방법: PyInstaller로 실행 파일 만들기

[모바일 SW 개발/Python] - Python 여러 버전 설치 방법 (3.x and 3.y 동시 설치)

[모바일 SW 개발/Python] - Python 폴더 및 파일 처리 함수 모음

[모바일 SW 개발/Python] - Python: 폴더 백업 기능 구현 (7zip 압축, Sample code)

[모바일 SW 개발/Python] - Python 표준 입출력(stdin/stdout) 활용 - 리눅스 프로그램과 연동

[모바일 SW 개발/Python] - Python 소스 숨기는 방법: pyc 활용 (Bytecode로 컴파일)

[모바일 SW 개발/Python] - Python JSON 사용 시 TypeError: Object of type bytes is not JSON serializable

[모바일 SW 개발/Python] - Python 2.7과 3.8호환성: a bytes-like object is required, not 'str'에러 수정

[모바일 SW 개발/Python] - [Tips] Python 에서 XML comment 처리 - Sample code 제공




댓글