Python:从数字(纪元时间)获取日期时间(带时区信息)并将其转换为特定日期格式的字符串[重复]

问题描述 投票:0回答:3

这个问题在这里已有答案:

在从互联网上抓取数据时,我得到一个数字作为响应,而不是日期时间字符串。以下是几个例子:

1508486400   --  instead of "2017, 20 Oct 10:00:00"
1510974000   --  instead of "2017, 18 Nov 4:00:00"
1388664000   --  instead of "2014, 02 Jan 13:00:00"

我想将这些数字转换为"dd/mm/yyyy"格式的相应日期。虽然保留时区不是一个授权,但如果我能根据我的日期所属的时区得到字符串,这是好的。

我想从数字中提取的日期属于"CAT+2:00:00"时区。

python python-3.x datetime
3个回答
2
投票

你所拥有的时间是UNIX time(也称为Epoch或POSIX时间)。您可以将其转换为datetime对象,然后将其格式化为:

>>> from datetime import datetime

>>> my_datetime = datetime.fromtimestamp(1508486400)
>>> my_datetime.strftime('%d/%m/%Y')
'20/10/2017'

编辑:根据您提到的所需时间,看起来您希望时间在“CAT + 2:00:00”时区。为此,您可以使用时区“Africa / Harare”的pytz模块:

>>> from datetime import datetime
>>> import pytz

>>> my_datetime = datetime.fromtimestamp(1508486400, tz= pytz.timezone('Africa/Harare'))
# Will hold the date time object as:
# datetime.datetime(2017, 10, 20, 10, 0, tzinfo=<DstTzInfo 'Africa/Harare' CAT+2:00:00 STD>)

>>> my_datetime.strftime('%d/%m/%Y')
'20/10/2017'

您可以使用pytz.all_timezones获取所有时区的列表。

还可以看看List of tz database time zones wiki。


1
投票

如果您正在使用time()函数,它是自1970年1月1日凌晨00:00以来的刻度数。


1
投票

你可以使用utcfromtimestamp()中的datetimetimestamp转换成yyyy/mm/dd格式:

import datetime

t = "1508486400"
print(datetime.datetime.utcfromtimestamp(int(t)).strftime('%Y-%m-%d'))

如果你也想要时间,请在'%Y-%m-%d %H:%M:%S'方法中使用strftime。这个link将帮助您从strftime获得所需的格式

© www.soinside.com 2019 - 2024. All rights reserved.