1. 程式人生 > >關於python時間time、datetime、date之間轉換,獲取今天、昨天、上週、上月、去年的時間

關於python時間time、datetime、date之間轉換,獲取今天、昨天、上週、上月、去年的時間

一、time、datetime、date之間轉換

概念: 首先需要理解三個名詞: 時間戳(int), 時間陣列, 日期格式(str)

utc time : 國際時間(倫敦時間)

localtime: 本地時間時間(如北京時間 = 倫敦時間 + 8小時)

國際時間獲取: time.gmtime()     datetime.datetime.utcnow()

本地時間獲取: time.localtime()    datetime.datetime.now()

 

import time

# 時間戳(本地)


     s = time.time()
     print('時間戳:', s)
>> 1540975769.3088

# 時間陣列
     time_array = time.localtime()              # localtime
     time_array2 = time.gmtime()              # utc time
     print('本地時間陣列:', time_array)
     print('utc時間陣列:', time_array2)
>> 本地時間陣列: time.struct_time(tm_year=2018, tm_mon=10, tm_mday=31, tm_hour=16, tm_min=50, tm_sec=53, tm_wday=2, tm_yday=304, tm_isdst=0)
>> utc時間陣列: time.struct_time(tm_year=2018, tm_mon=10, tm_mday=31, tm_hour=8, tm_min=50, tm_sec=53, tm_wday=2, tm_yday=304, tm_isdst=0)

# 日期格式(str)
     dt = time.strftime('%Y-%m-%d %H:%M:%S', time_array)
     print('日期格式(str):', dt)
>> 日期格式(str): 2018-10-31 16:50:53

1、時間戳轉日期(秒 -> 陣列 -> 日期):  time.strftime()  類似 datetime.datetime.strftime()
        s = 1540878671
        array = time.gmtime(s)
        dt = time.strftime('%Y-%m-%d %H:%M:%S', array)
        print("時間戳轉化的日期:", dt)
     >> 時間戳轉化的日期:2018-10-30 08:51:11

2、日期轉時間戳(日期 -> 陣列 -> 秒):  time.strptime()  類似 datetime.datetime.strptime()
       dt = '2018-10-30 08:51:11'
       array = time.strptime(dt, '%Y-%m-%d %H:%M:%S')
       s = time.mktime(array)
       print("日期轉化的時間戳:", s)
     >>日期轉化的時間戳:1540860671.0

     
二、獲取今天、昨天、上週、上月、去年的此刻時間

首先安裝: pip  install python-dateutil

相差天數函式: datetime.timedelta(days=1)  

相差月份函式:relativedelta(months=1)

 

from dateutil.relativedelta import relativedelta
import datetime

today = datetime.date.today()                                                          # 今天
yesterday = today - datetime.timedelta(days=1)                              # 昨天
Lastweek = today - datetime.timedelta(days=7)                              # 上週
Nearly_month = today - datetime.timedelta(days=30)                     # 前30天
Last_month = datetime.date.today() - relativedelta(months=1)       # 上月
Last_year = datetime.date.today() - relativedelta(months=12)        # 去年

上述獲取到的結果為<class 'datetime date'>,

 轉化為日期格式(str):  datetime.date.strftime(Last_year, '%Y-%m-%d')