考虑posix时间戳列表
posix_times = [1490750889, 1490751209, 1490751569]
我想将数组中的每个元素转换为包含美国/太平洋时区的本地日期和时间的文本字符串:
["3/28/2017 18:28:09", "3/28/2017 18:33:29", "3/28/2017 18:39:29"]
最简单的方法是什么,需要最少的包导入?
Converting unix timestamp string to readable date in Python解决了相关问题,例如提供了以下形式的解决方案:
posix_time = 1490750889
datetime.datetime.utcfromtimestamp(posix_time).strftime('%Y-%m-%dT%H:%M:%SZ')
不提供将此时间转换为其他时区的明确功能。此外,似乎这样的方法不适用于列表,并且需要for循环/列表理解。
答案 0 :(得分:2)
您可以使用标准datetime
库执行此操作:
In [1]: import datetime
In [2]: posix_times = [1490750889, 1490751209, 1490751569]
In [3]: [datetime.datetime.fromtimestamp(x).strftime("%x %X") for x in posix_times]
Out[3]: ['03/28/17 20:28:09', '03/28/17 20:33:29', '03/28/17 20:39:29']
答案 1 :(得分:1)
您可以将UNIX时间戳转换为datetime
对象,然后使用其strftime
方法对其进行格式化。但是,这将为您提供一个不知道时区的日期时间。为了使其能够识别时区,您需要从pytz
获取时区并使用localize
方法:
from datetime import datetime
from pytz import timezone
# ...
def format_time(time, tz):
localized = tz.localize(datetime.fromtimestamp(time))
return localized.strftime('%d/%m/%Y %H:%M:%S')
us_pacific = timezone('US/Pacific')
dates = map(lambda t: format_time(t, us_pacific), posix_times)