Python时间处理实战:获取与转换时间戳、日期及结构体
本文详细介绍Python中处理时间的核心方法。涵盖使用time模块获取秒级、毫秒级及微秒级时间戳,利用datetime进行日期格式化,以及实现时间字符串与时间戳的双向转换。此外,还解析了如何将时间转换为struct_time结构体,适用于各类开发场景。
获取秒级、毫秒级与微秒级时间戳
在Python开发中,获取不同精度的时间戳是常见需求。通过time模块的time()函数可获取原始浮点型时间数据,利用int()转换为秒级时间戳(10位整数),通过round(t * 1000)并取整得到毫秒级时间戳(13位整数),而round(t * 1000000)则用于获取微秒级时间戳(16位整数)。
import time
import datetime
t = time.time()
print (t) #原始时间数据
print (int(t)) #秒级时间戳
print (int(round(t * 1000))) #毫秒级时间戳
print (int(round(t * 1000000))) #微秒级时间戳
执行上述代码后,控制台将输出对应的原始时间数据、秒级、毫秒级及微秒级时间戳数值,例如原始数据为1499825149.257892时,秒级为1499825149,毫秒级为1499825149257,微秒级为1499825149257892。
1499825149.257892 #原始时间数据
1499825149 #秒级时间戳,10位
1499825149257 #毫秒级时间戳,13位
1499825149257892 #微秒级时间戳,16位
获取当前日期时间字符串
若需获取当前系统的日期和时间字符串,可使用datetime模块的now()方法结合strftime()函数。通过指定格式字符串如'%Y-%m-%d %H:%M:%S'可获取标准日期时间格式,若需包含微秒信息,可使用'%Y-%m-%d %H:%M:%S.%f'格式。
dt = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
dt_ms = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') # 含微秒的日期时间,来源 比特量化
print(dt)
print(dt_ms)
运行示例代码后,将输出类似'2018-09-06 21:54:46'的标准日期时间字符串,以及包含微秒信息的完整时间字符串如'2018-09-06 21:54:46.205213'。
2018-09-06 21:54:46
2018-09-06 21:54:46.205213
日期字符串转秒级时间戳
将特定格式的日期字符串转换为秒级时间戳时,需先使用time.strptime()将字符串解析为时间元组,再通过time.mktime()将其转换为时间戳,最后用int()取整。此过程适用于已知格式如'%Y-%m-%d %H:%M:%S'的日期字符串。
dt = '2018-01-01 10:40:30'
ts = int(time.mktime(time.strptime(dt, "%Y-%m-%d %H:%M:%S")))
print (ts)
以'2018-01-01 10:40:30'为例,转换后的秒级时间戳结果为1514774430,该数值可直接用于后续的时间计算或存储。
1514774430
秒级时间戳转日期字符串
将秒级时间戳还原为可读的日期时间字符串,需使用time.localtime()将时间戳转换为本地时间元组,再通过time.strftime()指定格式进行格式化输出。此方法适用于将存储的时间戳展示给用户。
ts = 1515774430
dt = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(ts))
print(dt)
当输入时间戳为1515774430时,转换后的日期时间字符串显示为'2018-01-13 00:27:10',确保了时间信息的准确还原。
2018-01-13 00:27:10
不同时间格式间的转换
在不同时间格式之间进行转换时,可先使用datetime.strptime()将源字符串解析为datetime对象,再使用strftime()输出为目标格式。例如,将'08/02/2019 01:00'转换为标准日期格式。
dt = '08/02/2019 01:00'
dt_new = datetime.datetime.strptime(dt, '%m/%d/%Y %H:%M').strftime('%Y-%m-%d %H:%M:%S')
print(dt_new)
执行格式转换后,源时间字符串'08/02/2019 01:00'将被转换为'2019-08-02 01:00:00',实现了格式的统一与标准化。
2019-08-02 01:00:00
时间数据转换为struct_time结构体
Python中可通过time.strptime()将日期时间字符串转换为struct_time结构体,或通过time.localtime()将时间戳(需为int类型)转换为结构体。这两种方式常用于需要访问时间各组成部分(如年、月、日、时等)的场景。
ta_dt = time.strptime("2018-09-06 21:54:46", '%Y-%m-%d %H:%M:%S') #日期时间转结构体
ta_ms = time.localtime(1486188476) #时间戳转结构体,注意时间戳要求为int,来源 比特量化
print(ta_dt)
print(ta_ms)
转换示例中,日期字符串'2018-09-06 21:54:46'转换为结构体后显示tm_year=2018, tm_mon=9等详细信息;时间戳1486188476转换后的结构体显示tm_year=2017, tm_mon=2等对应值,注意时间戳必须为整数类型。
time.struct_time(tm_year=2018, tm_mon=9, tm_mday=6, tm_hour=21, tm_min=54, tm_sec=46, tm_wday=3, tm_yday=249, tm_isdst=-1)
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14, tm_min=7, tm_sec=56, tm_wday=5, tm_yday=35, tm_isdst=0)
以上介绍了Python中处理时间戳、日期格式转换及结构体操作的核心方法,涵盖了从获取到转换的完整流程,有助于提升开发效率。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













