Python에서 날짜와 시간을 다루는 모듈을 사용해야 해서 찾아보는데 꽤 종류가 많아서 정리해보려고 합니다.


datetime.now() 함수(현재 시간 표현하기)

import datetime
 
now = datetime.datetime.now()
print(now)
# 현재 시간을 나타냄
# 2019-02-06 18:29:36.768516
 
Date = now.strftime('%Y-%m-%d')
print(Date)
# 현재 시간의 년/월/일만 표시
# 2019-02-06
 
Time = now.strftime('%H:%M:%S')
print(nowTime)
# 현재 시간의 시/분/초만 표시
# 18:29:36
 
DateAndTime = now.strftime('%Y-%m-%d %H:%M:%S')
print(DateAndTime)
# 현재 시간을 '년'-'월'-'일' '시':'분':'초'의 형태의 문자열로 표현
# DateAndTime에는 string 값이 들어가 있음


String 형태로 된 날짜와 시간을 datetime 값으로 바꾸려면 특정 함수를 사용해야 합니다.


datetime.strptime() 함수(str to datetime)

import datetime

StrDateTime = '2019-02-06 18:29:36'
DateTime = datetime.datetime.strptime(StrDateTime, '%Y-%m-%d %H:%M:%S')
print(type(DateTime))
# datetime 형태의 <class 'datetime.datetime'>가 출력됨 --> 문자열 형태가 아님
print(DateTime)
# datetime 형태의 값으로 2019-02-06 18:29:36이 출력됨 --> 문자열 형태가 아님


만약 datetime 형태로 된 날짜와 시간을 string 값으로 바꾸려면 다음과 같은 함수를 사용해야 합니다.


datetime.strftime() 함수(datetime to str)

import datetime

nowDateTime = datetime.datetime.now()
strDateTime = datetime.strftime('%Y-%m-%d %H:%M:%S')
print(type(DateTime))
# str 형태라고 출력됨
print(DateTime)
# 2019-02-06 18:29:36 -- 현재 시간이 출력됨



datetime.replace() 함수(시간 및 날짜 변경)

import datetime
 
DateTime = datetime.datetime.strptime('2019-02-06 18:29:36', '%Y-%m-%d %H:%M:%S')
print(DateTime) 
# 2019-02-06 18:29:36
 
AnotherDateTime = DateTime.replace(day=7)

print(DateTime) 
# 2019-02-06 18:29:36
print(AnotherDateTime)
# 2019-02-07 18:29:36


만약 datetime 값의 특정 날짜 혹은 시간을 바꿔주기 위해서는 replace 함수를 사용해야 합니다.

또한 변경하고자 하는 날짜 혹은 시간을 인자값으로 넣어주어야 합니다.


사용할 수 있는 인자값의 종류는 다음과 같습니다.


1. year (년도)

2. month (월)

3. day (날짜)

4. hour (시간)

5. minute (분)

6. second (초)

7. microsecond(마이크로 초)


이밖에도 응용할 수 있는 방법은 여러가지가 있습니다.


'PYTHON > Python 3.x' 카테고리의 다른 글

[Python] 딕셔너리 정렬하기  (1) 2019.02.05

파이썬 딕셔너리에 입력된 key 값과 value 값들을 정렬해야 할 때가 있습니다.

그럴 때 해결할 수 있는 방법을 사용해보려고 합니다.


각각 Key를 이용한 방법과 Value를 이용한 방법이 있습니다.

딕셔녀리는 {Key : Value}와 같은 구조를 가지고 있기 때문에 어떤 값으로 정렬을 수행할지 상황에 따라 다르기 마련이지요.




01. Key를 이용한 정렬

해결 방법은 list를 정렬할 때와 마찬가지로 sorted 함수를 사용하면 됩니다.


sorted() 함수 사용

dict = {'A' : 1, 'D' : 4, 'C' : 3, 'B' : 2}
sdict = sorted(dict.items())
# items() 함수는 key-value 쌍이 tuple로 구성된 리스트가 리턴됩니다.


결과는 다음과 같이 나타납니다.

>> [('A', 1), ('B', 2), ('C', 3), ('D', 4)]

만약 반대 순서대로(내림차순) 정렬하고 싶다면 간단하게 다음과 같이 reverse 인자값에 True를 넣어주시면 됩니다.


sorted()함수 사용 및 reverse 인자값 설정

dict = {'A' : 1, 'D' : 4, 'C' : 3, 'B' : 2}
sdict = sorted(dict.items(), reverse=True)
# items() 함수는 key-value 쌍이 tuple로 구성된 리스트가 리턴됩니다.
# reverse 인자값에 True를 넣어주면 내림차순으로 하겠다고 설정됩니다.
# reverse의 default 값은 False입니다.


결과는 다음과 같이 나타납니다.

>> [('D', 4), ('C', 3), ('B', 2), ('A', 1)]




02. Value를 이용한 정렬

value 값은 key를 이용하는 것보다 조금 더 복잡합니다.

하지만 크게 어려울 것이 없습니다.

다음과 같이 sorted 함수를 이용하여, 인자를 더 넣어주시면 됩니다.


먼저 원래의 결과와 동일한 결과를 뽑기 위한 코드는 다음과 같습니다.


sorted() 함수 사용 및 operator를 통한 인자값 설정

import operator

dict = {'A' : 1, 'D' : 4, 'C' : 3, 'B' : 2}
sdict = sorted(dict.items(), key=operator.itemgetter(0))
# 인자값에 있는 key=operator.itemgetter(0)는 정렬하고자 하는 키 값을 0번째 인덱스 기준으로 하겠다는 것입니다.
# 0번째 인자는 Key입니다.


결과는 다음과 같이 나타납니다.

>> [('A', 1), ('B', 2), ('C', 3), ('D', 4)]


위의 코드를 차근차근 설명하면 다음과 같습니다.


1. {'A' : 1, 'D' : 4, 'C' : 3, 'B' : 2} 값을 2의 리스트 형태로 바꿔준다.

2. [('A', 1), ('B', 2), ('C', 3), ('D', 4)]와 같이 변경된 값 중에, 0번째(영어로 된 인자값) 부분을 기준으로 결정한다.

3. 정해진 기준을 통해 정렬을 수행한다.

4. 영어가 기준이기 때문에 영어 오름차순으로 정렬된다.


이와 같은 흐름으로 실행되면, 이제 Value를 기준으로 바꿔줄 수 있겠습니다. ><


0번째는 Key이기 때문에 1번째는 Value입니다.

즉, Value를 기준으로 정렬해주는 코드는 다음과 같이 딱 한 곳만 수정하면 됩니다.


sorted() 함수 사용 및 operator를 통한 인자값 설정

import operator

dict = {'A' : 1, 'D' : 4, 'C' : 3, 'B' : 2}
sdict = sorted(dict.items(), key=operator.itemgetter(1))
# 인자값에 있는 key=operator.itemgetter(1)는 정렬하고자 하는 키 값을 1번째 인덱스 기준으로 하겠다는 것입니다.
# 1번째 인자는 Value입니다.


결과는 다음과 같이 나타납니다.

>> [('A', 1), ('B', 2), ('C', 3), ('D', 4)]


생각해보니 key와 value의 순서가 같게 나오게 되네요 허허....


무튼 위와 같이 하게 되면 정렬이 완료됩니다.



'PYTHON > Python 3.x' 카테고리의 다른 글

[Python] 날짜와 시간 관련 모듈  (0) 2019.02.06

+ Recent posts