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

我有一个包含 unix 时间和相应时区的大型电子表格。第 1 行第 1 列可能是,第 21538082000列可能是America/New_York,第 2 行可能是1538083000America/Los_Angeles。在每种情况下,我都需要以该时区内的某个人的时间格式来使用它们。

例如,在我的 EDT 示例(第 1 行)中,我想要,Sept 27, 2018 5:00:00PM EDT而对于第 2 行,我想要Sept 27, 2018 2:16:40PM PDT.

当我试图抓取数据并以更友好的格式显示给 3rd 方时,我经常遇到这种情况,但我从来没有找到一种特别好的方法来做到这一点。


繁星点点滴滴
浏览 91回答 3
3回答

凤凰求蛊

不使用 Arrow 的解决方案。from datetime import datetimefrom pytz import timezonedef 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

慕工程0101907

使用%I会将 Hour 格式化为12-hour time,%p并将返回AM/PM.使用pytz也可以:from datetime import datetimeimport pytzdef 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 EDTts = "1538083000"tz = "America/Los_Angeles"print(convert_time(int(ts), tz))>> Sep 28, 2018 02:16:40PM PDT
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python