1. Unix 时间戳(Unix Timestamp)是指从 1970 年 1 月 1 日 00:00:00 UTC 开始所经过的秒数(或毫秒数)
2. UTC:Coordinated Universal Time(协调世界时)
-
含义:UTC 是全球标准的时间基准,用于协调世界各地的时钟。它是基于 原子钟 的高精度时间标准,同时与 地球自转 保持同步(通过闰秒调整)。UTC 是 格林尼治标准时间(GMT) 的继任者,但比 GMT 更精确。
3. Unix 和 UTC 的关系
-
Unix 时间戳是基于 UTC 的,表示从 1970 年 1 月 1 日 00:00:00 UTC 开始的秒数。
-
因此,Unix 时间戳本质上是一个 UTC 时间点。
-
当需要将 Unix 时间戳转换为本地时间时,需要根据本地时区进行调整(例如,北京时间为 UTC+8)。
4.北京时间和时间戳转换代码
import pandas as pd
# 读取CSV文件
df = pd.read_csv('your_file.csv')
# 将时间戳转换为北京时间
df['date'] = pd.to_datetime(df['Timestamp'], unit='s').dt.tz_localize('UTC').dt.tz_convert('Asia/Shanghai')
# 将时间格式化为不带时区的字符串格式
df['date'] = df['date'].dt.strftime('%Y-%m-%d %H:%M:%S')
# 保存到新的CSV文件
df.to_csv('new_file.csv', index=False)
注意,这里的时间戳转换加了8小时!!
怎么判断是否需要加 8 小时?
-
需要加 8 小时的情况:
当时间戳是 UTC 时间时,北京时间是 UTC+8,因此需要将 UTC 时间加上 8 小时。上述代码通过.dt.tz_convert('Asia/Shanghai')
自动完成了时区转换(包括加 8 小时)。 -
不需要加 8 小时的情况:
如果时间戳已经是北京时间(即本地时间),则不需要再加 8 小时。如果时间戳没有时区信息,但实际上是本地时间,也不需要额外处理。