如何将UTC时间列转换为伦敦时区时间(适配时区变更)
UTC时间转伦敦时区时间的实现方案
要确保全年自动适配英国夏令时(BST)和格林威治标准时间(GMT)的切换,必须使用IANA标准时区标识符Europe/London,不能手动固定偏移量。以下是基于Python Pandas的实现代码:
代码示例
import pandas as pd # 加载数据(如果是CSV文件,直接用pd.read_csv('your_file.csv')即可) df = pd.DataFrame({ 'utc_date_and_time': ['2022-10-20 00:00:00', '2022-10-20 00:05:00', '2022-10-20 00:10:00'], 'api_calls': [12, 14, 17] }) # 转换UTC字符串为带时区标识的datetime类型 df['utc_date_and_time'] = pd.to_datetime(df['utc_date_and_time'], utc=True) # 转换为伦敦时区,自动处理夏令时/冬令时切换 df['london_date_and_time'] = df['utc_date_and_time'].dt.tz_convert('Europe/London') # 转为目标字符串格式 df['london_date_and_time'] = df['london_date_and_time'].dt.strftime('%Y-%m-%d %H:%M:%S') # 输出结果(保留索引) print(df.to_csv(index=True))
关键说明
pd.to_datetime(..., utc=True):明确将原始字符串解析为UTC时区的时间,避免时区歧义。tz_convert('Europe/London'):IANA时区数据库会自动根据日期判断当前是GMT(UTC+0)还是BST(UTC+1),完美适配全年时间转换,不会因为时区变更失效。strftime('%Y-%m-%d %H:%M:%S'):将转换后的datetime对象转为你需要的字符串格式,和原始UTC列格式一致。
运行结果
执行代码后会输出你预期的格式:
,utc_date_and_time,api_calls,london_date_and_time 0,2022-10-20 00:00:00+00:00,12,2022-10-20 01:00:00 1,2022-10-20 00:05:00+00:00,14,2022-10-20 01:05:00 2,2022-10-20 00:10:00+00:00,17,2022-10-20 01:10:00
如果不需要UTC列带时区后缀,可以对utc_date_and_time列也执行strftime格式化。
内容的提问来源于stack exchange,提问作者Benjamin
相关产品推荐
相关产品推荐

