Datetime пишет 1899-12-30: как это убрать? - PullRequest
0 голосов
/ 20 июня 2019

Я пишу скрипт на Python, который позволяет извлекать определенные моменты из электронной таблицы Excel и распечатывать их на консоли при запуске скрипта.Вот первые несколько ячеек электронной таблицы:

  A     B
1 #   Time
2 1  00:00:00
3 2  00:00:20
4 3  00:00:30
5 4  00:00:40
6 5  00:00:50

Первая ячейка, из которой я извлекаю, всегда имеет время 00:00:00.Однако печать данных на консоль добавляет дату 1899-12-30 к первому значению.В остальное время к ним не добавляется дата.Как удалить дату из данных, которые выводятся на консоль?

times = []
times.append(sheet.cell(row=2, column=2).value) #this is the value that gets 1899-12-30

for i in range(2, sheet.max_row):
     if (condition):
          times.append(sheet.cell(row=i, column=2).value) #these times come out fine

for i in times:
    print(i)

Как сделать так, чтобы первая строка times.append не печаталась 1899-12-30?

Ответы [ 2 ]

2 голосов
/ 20 июня 2019

times - это список datetime объектов, которые по умолчанию отображаются в виде 1899-12-30 при отсутствии какой-либо другой информации о дате. Вы можете извлечь объект time из каждого объекта, используя метод time().

times = []
times.append(sheet.cell(row=2, column=2).value.time())

for i in range(2, sheet.max_row):
     if (condition):
          times.append(sheet.cell(row=i, column=2).value.time())

for i in times:
    print(i)
0 голосов
/ 20 июня 2019

Кто-то другой может дать вам более общий ответ, но для вашего конкретного случая (поскольку вы сказали, что он всегда один и тот же), просто замените

times.append(sheet.cell(row=2, column=2).value)

на

times.append('00:00:00')

Обновление: вы можете просто взять часть time объекта datetime, предоставленного openpyxl:


times = []
times.append(sheet.cell(row=2, column=2).value.time()) # or hardcode this cell value

for i in range(2, sheet.max_row):
     if (condition):
          times.append(sheet.cell(row=i, column=2).value.time()) 

for i in times:
    print(i)``
...