时间数据结构
时间戳TimeStamp 一个整数或浮点数,表示自1970年1月1日(UTC)以来的秒数或毫秒数。
# 输出为 时间戳(秒): 1633077430
timestamp = int(time.time())
print("时间戳(秒):", timestamp)
Datetime对象
是datetime
模块中提供的,用于表示日期和时间的对象。
# 输出类似于:datetime对象: 2021-10-01 14:37:10
from datetime import datetime
# 将时间戳转换为datetime对象
dt_obj = datetime.fromtimestamp(timestamp)
print("datetime对象:", dt_obj)
日期字符串 用于表示日期和/或时间的字符串,通常遵循一定格式规则
# 输出类似于:日期字符串: 20211001
# 将datetime对象格式化为日期字符串
date_str = dt_obj.strftime('%Y%m%d')
print("日期字符串:", date_str)
strftime & strptime函数
以一行典型代码为例:
date_360 = (datetime.datetime.strptime(str(event_date),'%Y%m%d') - datetime.timedelta(days=360-1)).strftime('%Y%m%d')
简单的说,strftime 和 strptime 的功能正好相反, 它们用于实现字符串和时间元组的相互转换。其实只要明白函数名中 f 和 p 的含义即可理解:
- strptime() 中的 p 指的是parse, 意思是解析, 一般解析都是说对字符串进行解析, 所以 strptime() 方法的作用是将字符串解析为时间元组
- strftime() 中的 f 指的是format, 意思是格式化, 也就是处理成便于阅读的格式, 所以strftime() 方法的作用是将时间元组格式化为字符串
举例来说:
# String 转换 datetime
date_string = "2023-04-01 12:34:56"
parsed_time = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
print(parsed_time) # 输出为:datetime.datetime(2023, 4, 1, 12, 34, 56)
# datatime 转换 String
now = datetime.now()
formatted_time = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_time) # 输出为:"2023-04-01 12:34:56
datetime对象
datetime是Python处理日期和时间的标准库,我们常见的是模块下的类——datatime.datatime
。在构造 datetime 对象时,3 个必需参数为 year、month、day。
需要格外注意的是,两个datetime是不能做加法的
datetime + timedelta = datetime datetime - datetime = timedelta datatime - timedelta = datatime(最常用,用于获取某个间隔前后的datatime)
timedelta
对象定义为一个时间间隔,datetime 对象的加减都与 timedelta 息息相关。