为了账号安全,请及时绑定邮箱和手机立即绑定

在 Python 中以 AM/PM 格式显示特定时区的 unix 时间

在 Python 中以 AM/PM 格式显示特定时区的 unix 时间

繁星点点滴滴 2021-06-18 09:24:15
我有一个包含 unix 时间和相应时区的大型电子表格。第 1 行第 1 列可能是,第 21538082000列可能是America/New_York,第 2 行可能是1538083000和America/Los_Angeles。在每种情况下,我都需要以该时区内的某个人的时间格式来使用它们。例如,在我的 EDT 示例(第 1 行)中,我想要,Sept 27, 2018 5:00:00PM EDT而对于第 2 行,我想要Sept 27, 2018 2:16:40PM PDT.当我试图抓取数据并以更友好的格式显示给 3rd 方时,我经常遇到这种情况,但我从来没有找到一种特别好的方法来做到这一点。
查看完整描述

3 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

不使用 Arrow 的解决方案。


from datetime import datetime

from pytz import timezone


def convert_time(timestamp, tz):

    tzinfo = timezone(tz)

    dt = datetime.fromtimestamp(timestamp)

    fmt = "%b %d, %Y %-I:%M:%S%p "

    return dt.astimezone(tzinfo).strftime(fmt) + tzinfo.tzname(dt)


>>> ts = "1538082000"

>>> tz = "America/New_York"

>>> convert_time(int(ts), tz)

>>> Sep 27, 2018 5:00:00PM EDT


>>> ts2 = "1538083000"

>>> tz2 = "America/Los_Angeles"

>>> convert_time(int(ts2), tz2)

>>> Sep 27, 2018 2:16:40PM PDT


查看完整回答
反对 回复 2021-06-22
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

使用%I会将 Hour 格式化为12-hour time,%p并将返回AM/PM.

使用pytz也可以:


from datetime import datetime

import pytz



def convert_time(timestamp, tz):

    eastern = pytz.timezone('UTC')

    tzinfo = pytz.timezone(tz)

    loc_dt = eastern.localize(datetime.utcfromtimestamp(timestamp))

    fmt = "%b %d, %Y %I:%M:%S%p %Z"

    return loc_dt.astimezone(tzinfo).strftime(fmt)



ts = "1538082000"

tz = "America/New_York"

print(convert_time(int(ts), tz))


>> Sep 28, 2018 05:00:00PM EDT


ts = "1538083000"

tz = "America/Los_Angeles"

print(convert_time(int(ts), tz))


>> Sep 28, 2018 02:16:40PM PDT


查看完整回答
反对 回复 2021-06-22
  • 3 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信