Преобразовать список меток времени в список даты и времени - PullRequest
0 голосов
/ 29 марта 2019

В моей программе я фильтрую даты.Я получаю их в виде списка временных меток:

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.

У вас, ребята, есть рекомендации по настройке моего кода для выполнения этой задачи?

Ответы [ 4 ]

3 голосов
/ 29 марта 2019

Предполагая, что метки времени находятся в списке строк / int:

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)]
0 голосов
/ 29 марта 2019

Также вы можете использовать карту,

dt_object = list(map(datetime.date.fromtimestamp, timestamp))
0 голосов
/ 29 марта 2019

получить строковую дату '2018-12-25', например:

dt_object.strftime("%Y-%m-%d")

, если вы получили список меток времени, должно выглядеть так:

timestamp = [1545730073, 1545730073]
dates = [datetime.datetime.fromtimestamp(item).date() for item in timestamp]
0 голосов
/ 29 марта 2019

не пишите отметку времени в квадратных скобках.Попробуйте этот код работать правильно.

timestamp =1545730073
dt_object = datetime.datetime.fromtimestamp(timestamp)
dt_object = dt_object.date()
print(dt_object)
...