将日期时间数据转换为正确的格式arcpy python arcmap

问题描述 投票:-2回答:1

我在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/

python datetime strptime arcpy arcmap
1个回答
1
投票

您使用的是错误的日期时间方法。您得到的错误表明row中的值已经是datetime object

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(2003, 6, 3, 0, 0)的datetime对象,返回的字符串将为'2003/06/03 00:00'

© www.soinside.com 2019 - 2024. All rights reserved.