Python 时间,日期,时间戳(一)

本文详细介绍了Python中处理时间、日期与时间戳的相关模块及其使用方法,包括epoch概念、时间表达方式转换、模块函数应用及UTC时间解释。

Python 时间,日期,时间戳(一)

python time模块中的函数调用了运行平台中的C语言库,因此一些函数的语义和细节定义(例如epoch的起始以及支持的最大值等)是与平台相关的。

Python time模块

术语解释:

  • epoch:时间起始点。在Unix系统,epoch是1970的1月1日的零时。
  • time模块只能处理epoch以后的时间,同时对于未来的时间也有个限制点,该点是由所在平台的C语言库决定。在Unix系统中,是2038年。
  • 实时时间的精度可能会比输出值的单位大。例如,在大多数Unix系统上,时钟的精度是50Hz-100Hz。
  • UTC为世界标准时间
  • 时间戳就是从epoch时间起始点开始到当前经过的秒数

time模块中不同时间表达方式转换:

FromToUse
timestampstruct_time in UTCgmtime()
timestampstruct_time in local timelocaltime()
struct_time in UTCtimestampcalendar.timegm()
struct_time in local timetimestampmktime()
struct_timestrstrftime()
strstruct_timestrptime()

time模块中的struct_time类型:

该类型是gmtime(),localtime()strptime()的返回类型。该类型是包含了九个元素的元组。九个元素分别为:tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday, tm_yday, tm_isdst。

time模块中的函数:

time()

返回当前时间的时间戳,即从epoch到现在的秒数。虽然返回的值是float类型,但很多系统的时间精度达不到这个程度。

>>> import time
>>> time.time()
1437638809.995983
ctime([secs])

将时间戳转化为当地时间的字符类型,如果不提供输入,则自动调用time()函数。

>>> import time
>>> t = time.time()
>>> time.ctime(t)
'Thu Jul 23 16:20:05 2015'
gmtime([secs])

将时间戳转换为struct_time in UTC,如果不提供输入,则自动调用time()函数。

>>> import time
>>> time.gmtime()
time.struct_time(tm_year=2015, tm_mon=7, tm_mday=23, tm_hour=8, tm_min=31, tm_sec=26, tm_wday=3, tm_yday=204, tm_isdst=0)
localtime([secs])

将时间戳转换为struct_time in local,如果不提供输入,则自动调用time()函数。mktime()是其逆运算。

>>> import time
>>> t = time.localtime()
>>> t
time.struct_time(tm_year=2015, tm_mon=7, tm_mday=23, tm_hour=16, tm_min=35, tm_sec=25, tm_wday=3, tm_yday=204, tm_isdst=0)
>>> time.mktime(t)
1437640525.0
strftime(format[, t])

将struct_time类型数据转换为特定的字符类型。如果不提供输入,则自动调用localtime()函数。具体字符缩写代表的意义可参考文献1。

>>> import time
>>> time.strftime("%Y-%m-%d %H-%M-%S",time.localtime())
'2015-07-23 16-45-32'
strptime(string[, format])

将字符类型的时间表达以一种特定的格式解析为struct_time类型。

>>> import time
>>> time.strptime("30 Nov 2015", "%d %b %Y")
time.struct_time(tm_year=2015, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=334, tm_isdst=-1)

参考文献:

### 时间时间戳之间的转换 在 Python 中,可以利用 `datetime` 和 `time` 模块来实现时间时间戳之间的相互转换。以下是具体方法: #### 将时间戳转换为日期对象 可以通过 `datetime.datetime.fromtimestamp()` 方法将 Unix 时间戳(单位为秒)转换为本地时间日期对象。 ```python import datetime timestamp = 1609459200 # 示例时间戳 date_object = datetime.datetime.fromtimestamp(timestamp) print(date_object) # 输出格式化后的日期时间 ``` 上述代码展示了如何通过给定的时间戳创建对应的日期对象[^1]。 #### 将日期对象转换为时间戳 如果有日期对象并希望将其转换回时间戳,则可使用 `datetime.timestamp()` 方法。 ```python date_obj = datetime.datetime(2021, 1, 1) timestamp = date_obj.timestamp() print(timestamp) # 打印对应的时间戳 ``` 此部分说明了如何从日期对象获取相应的时间戳。 #### 使用 `time` 模块处理时间戳 除了 `datetime` 外,`time` 模块也提供了多种方式用于操作时间戳。例如,可以用 `time.localtime()` 或 `time.gmtime()` 来解析时间戳成结构化的元组形式;或者用 `time.mktime()` 反向构建时间戳。 ```python import time # 转换时间戳到本地时间元组 local_time_tuple = time.localtime(1609459200) # 构建新的时间戳 mktime_example = time.mktime(local_time_tuple) print(mktime_example) ``` 这里解释了另种途径来进行时间戳的相关运算[^2]。 #### 数据集中涉及的时间戳应用实例 对于实际应用场景中的例子,在推荐系统的数据加载过程中会遇到带有时间戳字段的数据表。这些时间戳通常记录的是用户行为发生的具体时刻,便于后续分析模型考虑时间因素的影响。 ```python import pandas as pd r_cols = ['user_id', 'movie_id', 'rating', 'unix_timestamp'] ratings_train = pd.read_csv('ml-100k/ua.base', sep='\t', names=r_cols, encoding='latin-1') ratings_test = pd.read_csv('ml-100k/ua.test', sep='\t', names=r_cols, encoding='latin-1') # 查看前几条数据确认读取成功与否 print(ratings_train.head()) ``` 以上片段演示了个典型场景下怎样导入含时间戳列的数据文件,并初步观察其内容[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值