Python 字串時間轉換time或者datetime時間戳
阿新 • • 發佈:2019-01-06
時間字串 –> 時間戳
- time 模組
timestring='2018-06-26 10:14:49'
# 字串時間轉為時間戳
def Changetime(str1):
Unixtime = int(time.mktime(time.strptime(str1, '%Y-%m-%d %H:%M:%S'))*1000)
return Unixtime
t1 = time.strptime(str1, '%Y-%m-%d %H:%M:%S') #將字串轉存成時間元組
t2 = Changetime(timestring) #1529979289000
- time.mktime() 與 time.localtime() 互為還原函式。
- time.mktime(timetuple) :將時間元組轉換成時間戳
time.localtime([timestamp]):將時間戳轉會為時間元組
注意:datetime 模組沒有能獲取時間戳的函式
時間戳 –> 時間字串
- time模組
timestamp = time.time() #1530098655.6190026
timestruct = time.localtime(timestamp)
t3 = time.strftime('%Y-%m-%d %H:%M:%S', timestruct) #'2018-06-27 19:24:15'
- datetime 模組
import datetime
timestamp = 1530098655.6190026
datetime_struct = datetime.datetime.fromtimestamp(timestamp)
t4 = datetime_struct.strftime('%Y-%m-%d %H:%M:%S') #'2018-06-27 19:24:15'
datetime_struct = datetime.datetime.utcfromtimestamp(timestamp)
t5 = datetime_struct.strftime('%Y-%m-%d %H:%M:%S') #'2018-06-27 11:24:15'
- fromtimestamp(timestamp[, tz]):將時間戳轉為當地的時間元組
- utcfromtimestamp(timestamp):將時間戳轉為UTC的時間元組。以北京為例:utc時間比北京當地時間少8個小時。
注意:time 和 datetime 之間可以用時間戳來相互轉換。
時間差計算
- datetime
#幾天/周前
import datetime
import time
now = datetime.datetime.now()
three_days_ago = now + datetime.timedelta(days=-3)
three_weeks_ago = now + datetime.timedelta(weeks=-3)
#幾天/周後
three_days_later = now + datetime.timedelta(days=3)
three_weeks_later = now + datetime.timedelta(weeks=3)
#獲取時間差
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 毫秒數
注意:沒有months和years
注意:獲取的時間差沒有分鐘
任意時間字串轉換時間物件
dateutil 與日期相關庫裡的一個日期解析器 能夠將字串 轉換為日期格式
import time
from dateutil import parser
time_string = time.ctime() # 'Wed Jun 27 19:40:17 2018' 可以是任意的時間格式 <type str>
datetime_struct = parser.parse(time_string)
print type(datetime_struct) # <type 'datetime.datetime'>
print datetime_struct.strftime('%Y-%m-%d %H:%M:%S') # 2018-06-27 19:40:17