Python中的时间对象

datatime及其数据处理函数

Posted by ZA on August 1, 2024

时间数据结构

时间戳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 息息相关。