Получение данных даты и времени в правильном формате arcpy python arcmap - PullRequest
0 голосов
/ 29 августа 2018

Я использую datetime в Arcpy для преобразования поля "Sample Date" в классе пространственных объектов в день года. Дата в поле имеет формат month/day/year и не содержит начальных нулей (например, 7/8/2018 вместо 07/08/2018).

Всякий раз, когда я пытаюсь запустить следующую строку кода,

dtm = datetime.datetime.strptime(row, '%Y/%m/%d %H:%M')

Я получаю следующую ошибку:

ValueError: time data '[datetime.datetime(2003, 6, 3, 0, 0)]' does not match format '%Y/%m/%d %H:%M'

Поле даты выборки, которое я использую, не содержит никаких данных о времени, которые, как я полагаю, являются источником двух нулей в конце сообщения об ошибке. Я просто предположил, что это были часы и минуты, но я не уверен.

Кто-нибудь знает, что такое нули, чтобы я мог изменить свой код, чтобы он соответствовал правильному формату, или как мне вообще избежать нулей? Я попробовал datetime.date вместо datetime.datetime, но у меня все еще были осложнения. Я могу опубликовать длинную версию кода, если необходимо, но код, который я предоставил, является причиной сообщения об ошибке. Я включил ссылку на ссылку datetime, которую использовал. Сайт предназначен для strftime, а не strptime, но я считаю, что он работает так же. Попытка strftime также выдает ошибку. Ссылка: http://strftime.org/

1 Ответ

0 голосов
/ 30 августа 2018

Вы используете неправильный метод datetime. Полученная ошибка показывает, что значение в row уже является объектом даты и времени .

strptime принимает строку и формат даты и времени и возвращает объект даты и времени.

Например, этот код: datetime.datetime.strptime('2018/08/30 10:30', '%Y/%m/%d %H:%M') возвращает объект datetime.datetime(2018, 8, 30, 10, 30)

strftime возвращает строку, представляющую дату в указанном формате.

У вас уже есть дата / время в row, поэтому вам нужно использовать strftime, чтобы преобразовать это в строку.

Правильный код для преобразования row в строку даты:

dtm = row.strftime('%Y/%m/%d %H:%M')

Это вернет строку, представляющую дату и время. Например, для объекта datetime datetime.datetime(2003, 6, 3, 0, 0) возвращаемая строка будет иметь вид «2003/06/03 00: 00»

...