Python 시간 처리 방법

우 리 는 시간 에 대한 처 리 를 자주 만 날 것 입 니 다.python 으로 시간 처 리 를 하 는 것 은 너무 편리 하지 않 습 니 다.이번 호 는 python 의 시간 처 리 를 소개 합 니 다!
python 으로 시간 처 리 를 할 때 주로 time,calendar,datetime 및 pandas 라 이브 러 리 를 사용 합 니 다.그 중에서 도 앞으로 두 개가 가장 많이 사 용 됩 니 다.
이번 호 에 서 는 주로 datetime 라 이브 러 리 로 시간 처 리 를 하 는 데 자주 사용 되 는 작업 을 소개 합 니 다.
1.datetime 기초
1.1 현재 시간 가 져 오기

import time
import datetime as dtm

##  datetime      
dtime = dtm.datetime.now() # dtm.datetime.utcnow()  
dtime
# datetime.datetime(2018, 12, 15, 13, 1, 30, 200649) #  、 、 、 、 、 、  

dtime.year, dtime.month, dtime.day
# (2018, 12, 15)

dtm.datetime.strftime(dtm.datetime.now(), '%Y-%m-%d %H:%M:%S')
# '2018-12-15 20:47:45'

#  time       :
time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time( )))
# '2018-12-15 20:49:17'
time.strftime("%Y-%m-%d %H:%M:%S") 
# '2018-12-15 20:50:11'
1.2 datetime 기본 동작

from datetime import datetime, date, time
# Using datetime.combine()
d = date(2005, 7, 14)
t = time(12, 30)
datetime.combine(d, t)
datetime(2005, 7, 14, 12, 30)

# datetime     :
datetime.date()
datetime.time()
#    str()             

dt = datetime(2005, 7, 14, 12, 30)
# datetime(%Y,%m,%d,%H,%M,%S): 
# datetime  6   ,            。              ,        ,     。

# >>> # Using datetime.timetuple() to get tuple of all attributes
tt = dt.timetuple()
for it in tt:  
   print(it)

# 2005  # year
# 7   # month
# 14   # day
# 12   # hour
# 30   # minute
# 0    # second
# 3    # weekday (0 = Monday, 6 = Sunday)
# 195   # number of days since 1st January
# -1   # dst - method tzinfo.dst() returned None

####################################################

#        
x='2018-05-27'
int(dtm.datetime(int(x[ :4]),int(x[5:7]),int(x[8: ])).strftime('%w'))
# 0     
dtm.datetime(2017, 1, 1).strftime("%w")   # 0-6 SUN-SAT
2.타임 스탬프 의 변환
Unix 타임 스탬프:  유 닉 스 에 서 는 시작 시간 차 이 를 나타 내 는 숫자 로 시간 을 기록 하 는 경우 가 많다.0 보다 크 면 시작 시간 후에 0 보다 작 으 면 시작 시간 전에 나타 낸다.이 숫자 는 때때로 부동 소수점 유형 이 고,때로는 정수 유형 이지 만,모두 이 숫자 를 유 닉 스 타임 스탬프(Timestamp)라 고 부른다.

import time
import datetime as dtm

##       
dtime = dtm.datetime.now() # dtm.datetime.utcnow()  

#    
ans_time = int(time.mktime(dtime.timetuple()))
ans_time
# 1535860540

#       -1
t1 = datetime.datetime.fromtimestamp(ans_time) # local time
t1
# datetime.datetime(2018, 9, 2, 11, 55, 40)
#     time   localtime()  : time.localtime(ans_time)

#       -2
t2 = datetime.datetime.utcfromtimestamp(ans_time) # utc time
t2
# datetime.datetime(2018, 9, 2, 3, 55, 40)
t2.strftime("%Y--%m--%d %H:%M:%S")
# 2018--09--02 03:55:40

#       -3
pd.to_datetime(ans_time,unit='s') # utc time
# Timestamp('2018-09-02 03:55:40')
3.시간 형식의 변환
  • strftime 즉 string format time 으로 시간 을 문자열 로 포맷 합 니 다
  • strptime 즉 string parse time 으로 문자열 을 시간 으로 해석 합 니 다
  • 
    import datetime as dtm
    start = dtm.datetime(2011,1,7,1,21,1) 
    # datetime.datetime(2011, 1, 7, 1, 21, 1)
    
    start.strftime('%Y-%m-%d %H:%M:%S')
    # '2011-01-07 01:21:01'
    
    dtm.datetime.strptime('2011-01-07 01:21:01','%Y-%m-%d %H:%M:%S')
    # datetime.datetime(2011, 1, 7, 1, 21, 1)
    str(start)
    # '2011-01-07 01:21:01'
    start.strftime("%Y-%m-%d 00:00:00")
    # '2011-01-07 00:00:00'
    
    
    # The strftime method formats a datetime as a string: 
    In [1]: dt.strftime('%m/%d/%Y %H:%M')
    Out[1]: '10/29/2011 20:30'
    # Strings can be converted (parsed) into datetime objects using the strptime function: 
    In [2]: dtm.datetime.strptime('20091031', '%Y%m%d')
    Out[2]: datetime.datetime(2009, 10, 31, 0, 0)
    
    >>> z
    dtm.datetime(2012, 9, 23, 21, 37, 4, 177393)
    >>> nice_z = dtm.datetime.strftime(z, '%A %B %d, %Y')
    >>> nice_z
    'Sunday September 23, 2012'
    
    #                  
    dt = dtm.datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M")
    #           
    # time.strftime( '%Y-%m-%d' , time.localtime(time.time()))
    
    # >>> # Formatting datetime
    print(dt.strftime("%A, %d. %B %Y %I:%M%p"))
    # 'Tuesday, 21. November 2006 04:30PM'
    'The {1} is {0:%d}, the {2} is {0:%B}, the {3} is {0:%I:%M%p}.'.format(dt, "day", "month", "time")
    # 'The day is 21, the month is November, the time is 04:30PM.'
    
    '''
    Datetime format specification:
    
    %Y Four-digit year
    %y Two-digit year
    %m Two-digit month [01, 12] 
    %d Two-digit day [01, 31]
    %H Hour (24-hour clock) [00, 23]
    %I Hour (12-hour clock) [01, 12]
    %M Two-digit minute [00, 59]
    %S Second [00, 61] (seconds 60, 61 account for leap seconds) 
    %w Weekday as integer [0 (Sunday), 6]
    datetime.strptime 분석 시간 은 해당 하 는 시간 형식 을 입력 해 야 하 며,dateutil 제3자 라 이브 러 리 의 parser.parse 방법 은 더욱 유연 합 니 다.
    dateutil.parser 는 가끔 귀 찮 은 일이 있 습 니 다.예 를 들 어'42'는 2042 년 에 오늘 의 날 짜 를 더 한 것 으로 분 석 됩 니 다.datetime.datetime(2042,9,1,0,0)
    
    from dateutil.parser import parse
    parse('2011-01-03') # datetime.datetime(2011, 1, 3, 0, 0)
    parse('Jan 31, 1997 10:45 PM') # datetime.datetime(1997, 1, 31, 22, 45)
    parse('6/12/2011', dayfirst=True) # datetime.datetime(2011, 12, 6, 0, 0)
    
    # pandas:
    datestrs = ['2011-07-06 12:00:00', '2011-08-06 00:00:00']
    pd.to_datetime(datestrs)
    # DatetimeIndex(['2011-07-06 12:00:00', '2011-08-06 00:00:00'], dtype='datetime64[ns]', freq=None)
    4. Timedelta
    timedelta 는 두 시간 사이 의 시간 차 를 나 타 낼 수 있다.
    dtm.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
    
    t1 = dtm.datetime(2018,7,12,15,6,9)
    t2 = dtm.datetime(2018,9,11,12,33,23)
    td = t2-t1
    td
    # datetime.timedelta(60, 77234) 
    td.days,td.seconds
    # (60, 77234)
    
    
    #  timedelta   : day, hour, minute
    def parse_timedelta(td):
        """
        transform timedelta to day, hour, minute
        """
        return td.days, td.seconds//3600, (td.seconds//60)%60
    
    parse_timedelta(td)
    # (60, 21, 27)
    timedelta 를 이용 하여 시간 외 추 를 진행 합 니 다:
    
    import datetime as dtm
    
    # 100     
    (dtm.datetime.now() - dtm.timedelta(days = 100)).strftime("%Y-%m-%d") 
    
    def TaftD(FORMAT_DATE,i): 
      """
              
      """
      return (dtm.datetime.strptime(FORMAT_DATE, '%Y-%m-%d') + dtm.timedelta(days = i)).strftime('%Y-%m-%d')
    
    def TaftH(FORMAT_TIME,i): 
      """
               
      """
      return (dtm.datetime.strptime(FORMAT_TIME, '%Y-%m-%d %H:%M:%S') + dtm.timedelta(hours = i)).strftime('%Y-%m-%d %H:%M:%S')
    
    TaftD("2018-05-17", -2)
    # '2018-05-15'
    TaftH("2018-05-17 10:40:00", 2)
    # '2018-05-17 12:40:00'
    이번 호 는 주로 datetime 에서 시간 처 리 를 하 는 데 자주 사용 되 는 작업 을 소개 하 였 으 며,다음 에 우 리 는 pandas 중의 일부 시간 처리 작업 을 소개 할 것 이다.어서 오 세 요.좋아요,기대 해 주세요.
    이상 은 Python 이 시간 처 리 를 어떻게 하 는 지 에 대한 상세 한 내용 입 니 다.Python 시간 처리 에 관 한 자 료 는 다른 관련 글 에 주목 하 세 요!

    좋은 웹페이지 즐겨찾기