时间戳(Unix时间戳),是指从格林威治时间1970年1月1日(00:00:00 GMT)开始至当前时间所经过的秒数。一个小时表示为Unix时间戳格式为3600秒;一天表示为Unix时间戳格式为86400秒。

在很多程序或数据库中,日期都是以这种Unix时间戳的长整型数据表示或存储的。这样表示的好处是能够唯一地标识某一刻的时间python时间戳转日期,但却不便于观察和阅读。

本文就来讲一讲在Pandas中如何进行Unix时间戳和日期之间的转换。

Unix时间戳转换为日期

在Pandas中,我们可以使用pd.to_datetime()或pd.Timestamp()函数实现Unix时间戳到日期的转换。其中,unit参数提供了时间戳的单位,如秒、毫秒、纳秒等。

# unix时间戳转换为日期
pd.Timestamp(1680195805, unit='s')

# unix时间戳转换为日期
pd.to_datetime(1680195805, unit='s')

# unix时间戳转换为日期
pd.to_datetime(1680195805433502912, unit='ns')

除此之外,我们还可以利用Python内置的time模块来实现转换。

import time

# 获取时间戳所表示的GMT时间
time_gmt = time.gmtime(1680195805)

# 转换为日期格式
time.strftime('%Y-%m-%d %H:%M:%S', time_gmt)

日期转换为Unix时间戳

Pandas中没有直接将日期或日期字符串转换为Unix时间戳的函数,我们需要利用Python的内置time模块来实现转换。

首先,我们需要将日期字符串转化为日期元组,然后利用time.mktime()函数进行转换。

# 日期字符串
dt = '2023-03-30 17:03:25'

# 先转化为timetuple,再转化为Unix时间戳
time.mktime(time.strptime(dt, '%Y-%m-%d %H:%M:%S'))

细心的读者也许会发现,上面例子转换出来的时间戳1680167005.0并不等于前文中的时间戳1680195805,这是因为在这个例子中,dt表示的是本地时间,并非GMT/UTC时间,因此转换后的Unix时间戳并不一致。

这一点,我们可以通过两个Unix时间戳之间的差来证实,1680195805-1680167005=28800python时间戳转日期,再将28800除以3600就得到了8,此为东八时区与UTC时区之间的时间差。

限时特惠:本站每日持续更新海量展厅资源,一年会员只需29.9元,全站资源免费下载
站长微信:zhanting688