日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Python 时间类型及其互相转换

發(fā)布時間:2024/8/5 综合教程 36 生活家
生活随笔 收集整理的這篇文章主要介紹了 Python 时间类型及其互相转换 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1 常用的時間模塊

time是模塊提供的功能是更加接近于操作系統(tǒng)層面的。time 模塊是圍繞著 Unix Timestamp 進行的。

該模塊主要包括一個類 struct_time,另外其他幾個函數(shù)及相關常量。 需要注意的是在該模塊中的大多數(shù)函數(shù)是調用了所在平臺C library的同名函數(shù), 所以要特別注意有些函數(shù)是平臺相關的,可能會在不同的平臺有不同的效果。

import time

time_str = "2020-12-31 09:30:18"
t_struct = time.strptime(time_str, "%Y-%m-%d %H:%M:%S")  # 生成time_str對應的struct_time對象
t_str = time.strftime("%Y-%m-%d %H:%M:%S", t_struct)  # 生成t_struct對應格式的字符串時間
t_stamp = time.mktime(t_struct)  # 生成t_struct對應的時間戳

print(t_struct)
print(t_str)
print(t_stamp)

# struct_time有以下常用屬性
print(t_struct.tm_year)  # 年份
print(t_struct.tm_mon)   # 月份
print(t_struct.tm_mday)  # 日期
print(t_struct.tm_wday)  # 星期
print(t_struct.tm_hour)  # 小時
print(t_struct.tm_min)   # 分鐘
print(t_struct.tm_sec)   # 秒鐘

datetime可以理解為對 time 進行了封裝,提供了更多實用的函數(shù)。在datetime 模塊中包含了幾個類:

timedelta 主要用于計算時間跨度
tzinfo 時區(qū)相關
time 只關注時間
date只關注日期
datetime 同時有時間和日期

關系型數(shù)據(jù)庫DateTime類型在python對應的類型為datetime.datetime類型

import datetime

time_stamp = 1609378218
time_str = "2020-12-31 09:30:18"
dd_struct = datetime.datetime.strptime(time_str,"%Y-%m-%d %H:%M:%S")  # 轉化為struct_time對象
dd_obj = datetime.datetime.fromtimestamp(time_stamp)  # 將時間戳轉換為datetime
dd_struct1 = dd_obj.timetuple()  # 將datetime對象轉化為struct_time對象
dd_str = dd_obj.strftime("%Y-%m-%d %H:%M:%S")  # 將datetime對象轉化為str格式
dd_stamp = dd_obj.timestamp()  # 將datetime對象轉為時間戳

print(dd_struct)
print(dd_obj)
print(dd_struct1)
print(dd_str)
print(dd_stamp)

# 所有datetime下的時間類型都有timetuple()方法可以將其轉化為struct_time對象,進而可以用time模塊將其轉換為任意類型

date_obj = datetime.date(year=2020, month=12, day=31)
time_obj = datetime.time(hour=9, minute=30, second=18)
datetime_obj = datetime.datetime(year=2020, month=12, day=31, hour=9, minute=30, second=18)
# datetime對象有以下常用屬性
print(datetime_obj.year)  # 年份
print(datetime_obj.month) # 月份
print(datetime_obj.day)   # 日期
print(datetime_obj.hour)  # 小時
print(datetime_obj.minute)# 分鐘
print(datetime_obj.second)# 秒種

2. 常用時間類型之間的轉換

常用的時間類型有 時間戳(int/float),struct_time對象,datetime.date對象,datetime.datetime對象

2.1 Str格式 和 時間戳

# 使用time 由 str 轉換為 時間戳
timeStr = '2020-12-31 09:30:18'
timeArray = time.strptime(timeStr, "%Y-%m-%d %H:%M:%S")
timeStamp = time.mktime(timeArray)
print(timeStamp)  # 1609378218.0

# 使用datetime 由 str 轉換為 時間戳
dateArray = datetime.datetime.strptime(timeStr, "%Y-%m-%d %H:%M:%S")
timeStamp = dateArray.timestamp()
print(timeStamp)  # 1609378218.0

# 使用time 由 時間戳 轉換為 str
timeStamp = 1609378218
timeArray = time.localtime(timeStamp)
timeStr = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
print(timeStr)  # 2020-12-31 09:30:18

# 使用datetime 由 時間戳 轉換為 str
dateArray = datetime.datetime.fromtimestamp(timeStamp)
timeStr = dateArray.strftime("%Y-%m-%d %H:%M:%S")
print(timeStr)  # 2020-12-31 09:30:18

2.2 datetime對象和時間戳

# 由 時間戳 轉換為 datetime對象 (轉換為 str格式)
timeStamp = 1609378218
dateArray = datetime.datetime.fromtimestamp(timeStamp)
timeStr = dateArray.strftime("%Y-%m-%d %H:%M:%S")
print(timeStr)   # 2020-12-31 09:30:18

# 使用datetime,指定utc時間,相差8小時
timeStamp = 1609378218
dateArray = datetime.datetime.utcfromtimestamp(timeStamp)
timeStr = dateArray.strftime("%Y-%m-%d %H:%M:%S")
print(timeStr)   # 2020-12-31 09:30:18

# 由 datetime對象 轉換為 時間戳
dateArray = datetime.datetime(year=2020, month=12, day=31, hour=9, minute=30, second=18)
timeStamp = dateArray.timestamp()
print(timeStamp)  # 1609378218.0

2.3 str類型轉換為其他格式的str

# 原始字符類型的時間
ts = '2020-12-31 09:30:18'
# 轉為struct_time
timeArray = time.strptime(ts, "%Y-%m-%d %H:%M:%S")
# 轉為其它顯示格式
timeStr = time.strftime("%Y/%m/%d %H:%M:%S", timeArray)
print(timeStr)

3. 生成特定時間

# time獲取當前時間戳
now = int(time.time())
print(now)

# 獲取當前時間對象
timeArray = time.localtime(now)
print(timeArray)

# 獲取當前時間str
timeStr = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
print(timeStr)

# datetime獲取當前時間
now = datetime.datetime.now()
print(now)

# 獲取當前時間str
timeStr = now.strftime("%Y-%m-%d %H:%M:%S")
print(timeStr)

# 獲取當前時間戳
timeStamp = now.timestamp()
timeStamp1 = time.mktime(now.timetuple())
print(timeStamp)
print(timeStamp1)

# 獲取當天零時時間戳
time_begin = time.mktime(datetime.date.today().timetuple())
print(time_begin)

# 當月第一天零時時間戳
month_begin = datetime.datetime(now.year, now.month, 1, 0, 0, 0)
month_begin = month_begin.timestamp()
print(month_begin)

# 下月第一天零時時間戳
month = now.month
month = 0 if month == 12 else month
future_mouth_first = datetime.datetime(now.year, month + 1, 1, 0, 0, 0)
future_mouth_first = future_mouth_first.timestamp()
print(future_mouth_first)

# 當月最后一天最后一秒時間戳
month = now.month
month = 0 if month == 12 else month
future_mouth_first = datetime.datetime(now.year, month + 1, 1, 23, 59, 59)
month_end = future_mouth_first - datetime.timedelta(days=1)
month_end = month_end.timestamp()
print(month_end)

# 上個月最后一天最后一秒時間戳
this_month_first = datetime.datetime(now.year, now.month, 1, 23, 59, 59)
last_month_last = this_month_first - datetime.timedelta(days=1)
last_month_last = last_month_last.timestamp()
print(last_month_last)

總結

以上是生活随笔為你收集整理的Python 时间类型及其互相转换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。