在我的程序中,我过滤了日期。我收到它们作为时间戳列表:
timestamp = [1545730073]
此列表的类型为:
print(type(timestamp))
Out: <class 'int'>
要将此列表转换为datetime / datetime64列表,我尝试了以下代码的多个版本:
dt_object = datetime.datetime.fromtimestamp(timestamp)
print(dt_object)
或
dt_object = [datetime.datetime.fromtimestamp(item) for item in timestamp]
print(dt_object)
我需要这种类型以便稍后通过以下功能提取日期:
import datetime
dt_object = dt_object.date()
print(dt_object)
最终的输出应该是Out: 2018-12-25
。
你们是否有建议来调整我的代码以完成此任务?
答案 0 :(得分:3)
假设时间戳记在字符串/整数列表中:
import datetime as dt
timestamp = [1545730073,1645733473] # or timestamp = ['1545730073','1645733473']
for ts in timestamp:
print(dt.datetime.fromtimestamp(int(ts)).date())
输出:
2018-12-25
2022-02-25
编辑:
使用列表理解:
print([dt.datetime.fromtimestamp(int(ts)).date() for ts in timestamp])
输出:
[datetime.date(2018, 12, 25), datetime.date(2022, 2, 25)]
编辑2 :
如果要替换时间戳记,请使用enumerate()
:
import datetime as dt
timestamp = [1545730073,1645733473] # or timestamp = ['1545730073','1645733473']
for indx, ts in enumerate(timestamp):
timestamp[indx] = dt.datetime.fromtimestamp(int(ts)).date()
print(timestamp)
输出:
[datetime.date(2018, 12, 25), datetime.date(2022, 2, 25)]
答案 1 :(得分:0)
请勿在方括号内写入时间戳。 尝试使此代码正常工作。
timestamp =1545730073
dt_object = datetime.datetime.fromtimestamp(timestamp)
dt_object = dt_object.date()
print(dt_object)
答案 2 :(得分:0)
像这样获取字符串日期“ 2018-12-25”
dt_object.strftime("%Y-%m-%d")
如果有时间戳列表,应该这样:
timestamp = [1545730073, 1545730073]
dates = [datetime.datetime.fromtimestamp(item).date() for item in timestamp]
答案 3 :(得分:0)
您还可以使用地图
dt_object = list(map(datetime.date.fromtimestamp, timestamp))