这个问题在这里已有答案:
在从互联网上抓取数据时,我得到一个数字作为响应,而不是日期时间字符串。以下是几个例子:
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"
时区。
你所拥有的时间是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。
如果您正在使用time()函数,它是自1970年1月1日凌晨00:00以来的刻度数。
你可以使用utcfromtimestamp()
中的datetime
将timestamp
转换成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
获得所需的格式