Python 之 時間字符串、時間戳、時間差、任意時間字符串轉換時間對象


1. 時間字符串 --> 時間戳

    1) time 模塊

timestring = '2016-12-21 10:22:56'
print time.mktime(time.strptime(timestring, '%Y-%m-%d %H:%M:%S')) # 1482286976.0

    time.mktime() 與 time.localtime() 互為還原函數。

    time.mktime(timetuple) :將時間元組轉換成時間戳

    time.localtime([timestamp]):將時間戳轉會為時間元組

    2) datetime 模塊

在這里沒有找到,似乎只有 time 模塊能獲取時間戳

 

2. 時間戳 --> 時間字符串

    1) time 模塊

timestamp = time.time()
timestruct = time.localtime(timestamp)
print time.strftime('%Y-%m-%d %H:%M:%S', timestruct) # 2016-12-22 10:49:57

    2) datetime 模塊

import datetime
timestamp = 1482374997.55
datetime_struct = datetime.datetime.fromtimestamp(timestamp)
print datetime_struct.strftime('%Y-%m-%d %H:%M:%S') # 2016-12-22 10:49:57

datetime_struct = datetime.datetime.utcfromtimestamp(timestamp)
print datetime_struct.strftime('%Y-%m-%d %H:%M:%S') # 2016-12-22 02:49:57

    fromtimestamp(timestamp[, tz]):將時間戳轉為當地的時間元組
    utcfromtimestamp(timestamp):將時間戳轉為UTC的時間元組。以北京為例:utc時間比北京當地時間少8個小時。

 

3. 時間差計算

    1) 幾天/周前

import datetime

now = datetime.datetime.now()
three_days_ago = now + datetime.timedelta(days=-3)
three_weeks_ago = now + datetime.timedelta(weeks=-3)

print now # datetime.datetime(2016, 12, 22, 11, 24, 49, 987171)
print three_days_ago # datetime.datetime(2016, 12, 19, 11, 24, 49, 987171)
print three_weeks_ago # datetime.datetime(2016, 12, 1, 11, 24, 49, 987171)

    2) 幾天/周后

import datetime

now = datetime.datetime.now()
three_days_later = now + datetime.timedelta(days=3)
three_weeks_later = now + datetime.timedelta(weeks=3)

print now # datetime.datetime(2016, 12, 22, 11, 24, 49, 987171)
print three_days_later # datetime.datetime(2016, 12, 25, 11, 24, 49, 987171)
print three_weeks_later # datetime.datetime(2017, 1, 12, 11, 24, 49, 987171)

注意:沒有months和years

    3)時間差

import time
import datetime

start = datetime.datetime.now()
time.sleep(30)
end = datetime.datetime.now()

print (end-start).days # 0 天數
print (end-start).total_seconds() # 30.029522 精確秒數
print (end-start).seconds # 30 秒數
print (end-start).microseconds # 29522 毫秒數

注意:沒有分鍾

 

4. 任意時間字符串轉換時間對象

import time
from dateutil import parser
 
time_string = time.ctime() # 'Thu Dec 22 10:35:25 2016',這里可以是任意的時間格式
datetime_struct = parser.parse(time_string)
print type(datetime_struct) # <type 'datetime.datetime'>
print datetime_struct.strftime('%Y-%m-%d %H:%M:%S') # 2016-12-22 13:58:59

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM