在Python中,通常有这三种方式来表示时间:时间戳、元组(struct_time)、格式化的时间字符串。
- 时间戳 (浮点数 秒为单位)
time.time()
- 时间戳表示的是从 1970年1月1日00:00:00 (英国伦敦时间)开始按秒计算的偏移量。
- 1970年1月1日08:00:00 (东8区北京时间)
- 格式化时间 (str 数据类型)
- 结构化时间 (元祖)
时间戳 --> 格式化时间
import time
timestamp = time.time()
print(timestamp) # 1594167801.9490435
struct_time = time.localtime(timestamp) # 时间戳 --> 结构化时间
print(struct_time)
# time.struct_time(tm_year=2020, tm_mon=7, tm_mday=8, tm_hour=8, tm_min=23, tm_sec=21, tm_wday=2, tm_yday=190, tm_isdst=0)
fmt = time.strftime("%Y-%m-%d %H:%M:%S", struct_time) # 结构化时间 --> 格式化时间
print(fmt) # 2020-07-08 08:23:21
格式化时间 --> 时间戳
import time
fmt = '2020-07-08 08:23:21'
struct_time = time.strptime(fmt, "%Y-%m-%d %H:%M:%S") # 格式化时间 --> 结构化时间
print(struct_time)
# time.struct_time(tm_year=2020, tm_mon=7, tm_mday=8, tm_hour=8, tm_min=23, tm_sec=21, tm_wday=2, tm_yday=190, tm_isdst=-1)
timestamp = time.mktime(struct_time) # 结构化时间 --> 时间戳
print(timestamp) # 1594167801.0
时间格式之间的转换
- gmtime:英国伦敦时间
- localtime:东8区北京时间
- strftime:str format time
- strptime:str parse time
写函数,计算本月1号的时间戳时间
def get_timestamp():
fmt = time.strftime("%Y-%m-01")
struct_time = time.strptime(fmt, "%Y-%m-%d")
timestamp = time.mktime(struct_time)
return timestamp
ret = get_timestamp()
print(ret)