python-3.x - 将 UTC 日期时间列转换为 IST 数据时间
问题描述
我有 df(.xlsx 格式),日期列采用 UTC 格式
date
2018-07-31 00:00
2018-07-31 00:10
2018-07-31 00:20
2018-07-31 00:30
2018-07-31 00:40
我想转换成 IST(+5:30) 格式,如下所示
date
2018-07-31 05:30
2018-07-31 05:40
2018-07-31 05:50
2018-07-31 06:00
2018-07-31 06:10
many solutions available on stack overflow but its does not match with my criteria.
解决方案
这是一种使用datetime.timedelta
.
前任:
import datetime
data = ["2018-07-31 00:00", "2018-07-31 00:10", "2018-07-31 00:20", "2018-07-31 00:30", "2018-07-31 00:40"]
for i in data:
print( datetime.datetime.strptime(i, "%Y-%m-%d %H:%M") + datetime.timedelta(hours=5, minutes=30) )
输出:
2018-07-31 05:30:00
2018-07-31 05:40:00
2018-07-31 05:50:00
2018-07-31 06:00:00
2018-07-31 06:10:00
使用pytz
模块。
前任:
import datetime
from pytz import timezone, utc
tz = timezone('Asia/Kolkata')
data = ["2018-07-31 00:00", "2018-07-31 00:10", "2018-07-31 00:20", "2018-07-31 00:30", "2018-07-31 00:40"]
for i in data:
print( datetime.datetime.strptime(i, "%Y-%m-%d %H:%M").replace(tzinfo=utc).astimezone(tz) )
输出:
2018-07-31 05:30:00+05:30
2018-07-31 05:40:00+05:30
2018-07-31 05:50:00+05:30
2018-07-31 06:00:00+05:30
2018-07-31 06:10:00+05:30
熊猫DF
import pandas as pd
data = ["2018-07-31 00:00", "2018-07-31 00:10", "2018-07-31 00:20", "2018-07-31 00:30", "2018-07-31 00:40"]
df = pd.DataFrame({"Date": data})
df["Date_IST"] = pd.to_datetime(df["Date"]) + pd.DateOffset(hours=5, minutes=30)
print(df)
输出:
Date Date_IST
0 2018-07-31 00:00 2018-07-31 05:30:00
1 2018-07-31 00:10 2018-07-31 05:40:00
2 2018-07-31 00:20 2018-07-31 05:50:00
3 2018-07-31 00:30 2018-07-31 06:00:00
4 2018-07-31 00:40 2018-07-31 06:10:00
推荐阅读
- installation - 安装 Cytoscape 时遇到问题:无法访问 App Store
- java - saml 集成 Ruby(IDP) 和 Java(SP)
- html - 图片路径中的额外元素
- selenium - Selenium 在表单中找不到搜索元素
- reactjs - React Native Lottie - 使用状态的进度动画
- c# - 如何使用itextsharp c#从现有pdf中删除或隐藏文本
- python - db.create_all() 不创建数据库
- php - Laravel更改primaryKey不起作用
- datatables - 禁用双击数据表中的箭头键
- python - Python数据框以3组为一组添加列