如何将 UTC 时间转换为本地时间
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将 UTC 时间转换为本地时间相关的知识,希望对你有一定的参考价值。
java utc转本地时间的方法:1、创建一个格式化时间对象simpleDateFormat,并初始化格式yyyy-MM-dd HH:mm:ss:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
2、创建时区对象utcZone,获取utc所在的时区
TimeZone utcZone = TimeZone.getTimeZone("UTC");
3、设置utc时区,为转换做准备
simpleDateFormat.setTimeZone(utcZone);
4、获取本地时间,并转换
Date myDate = simpleDateFormat.parse(rawQuestion.getString("AskDateTime"));
5,按照上面的流程就转换本地时间了。 参考技术A java utc转本地时间的方法:
1、创建一个格式化时间对象simpleDateFormat,并初始化格式yyyy-MM-dd HH:mm:ss:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
2、创建时区对象utcZone,获取utc所在的时区
TimeZone utcZone = TimeZone.getTimeZone("UTC");
3、设置utc时区,为转换做准备
simpleDateFormat.setTimeZone(utcZone);
4、获取本地时间,并转换
Date myDate = simpleDateFormat.parse(rawQuestion.getString("AskDateTime"));
5,按照上面的流程就转换本地时间了。本回答被提问者采纳
将UTC时间戳转换为熊猫中的本地时区问题
【中文标题】将UTC时间戳转换为熊猫中的本地时区问题【英文标题】:Convert UTC timestamp to local timezone issue in pandas 【发布时间】:2019-04-04 14:52:56 【问题描述】:我正在尝试将 Unix UTC 时间戳转换为 Pandas 中的本地日期格式。我一直在寻找一些解决方案,但我无法完全理解如何正确地做到这一点。
我有一个包含多个 UTC 时间戳列的数据框,所有这些列都需要转换为本地时区。比如说欧盟/柏林。
我首先通过以下调整将所有时间戳列转换为有效的日期时间列:
df['date'] = pd.to_datetime(df['date'], unit='s')
这有效并给了我以下结果,例如2019-01-18 15:58:25 如果我知道尝试调整此日期时间的时区,我已经尝试了两个:
df['date'].tz_localize('UTC').tz_convert('Europe/Berlin')
和
df['date'].tz_convert('Europe/Berlin')
在这两种情况下,错误都是:TypeError: index is not a valid DatetimeIndex or PeriodIndex
,我不明白为什么。
问题一定是 DateTime 列不在索引上。但即使我使用df.set_index('date')
并且在我尝试了上述选项之后它也不起作用并且我得到了同样的错误。
另外,如果可行的话,这个方法似乎只允许对索引的 DateTime 进行时区调整。然后我将如何调整需要调整的其他列?
希望找到一些有关如何最好地一劳永逸地解决这些问题的信息!谢谢
【问题讨论】:
【参考方案1】:您应该首先通过将.dt.
添加到非索引来指定它是一个日期时间
df['date'] = df['date'].dt.tz_localize('UTC').dt.tz_convert('Europe/Berlin')
如果该列不是索引列,则应使用此选项。
【讨论】:
有效!这也太容易了……?当日期时间从 UTC 时间戳转换时,为什么实际上需要在tz_localize('UTC')
中告诉它是 UTC?
Pandas 不知道它在转换什么。它看到一个时间,但它不知道时间是 UTC,所以它不知道转换时间应该提前或落后多少小时,除非你告诉它。以上是关于如何将 UTC 时间转换为本地时间的主要内容,如果未能解决你的问题,请参考以下文章