【发布时间】:2016-03-10 21:18:54
【问题描述】:
使用 Python 2.7,我正在尝试创建一个相对时间数组,其中相对时间是雷暴中间时间与暴风雨期间其他时间之间的差异。最终,我希望我的相对时间数组的格式为 -minutes、0 和 +minutes(其中 -minutes 是风暴中间之前的分钟,0 是风暴中间,+minutes 是之后的分钟)暴风雨中)。我认为循环是最有效的方法。我已经有一个一维数组 MDAdatetime,其中填充了我提到的其他风暴时间,作为字符串。我在代码的开头指定了风暴的中间,它也是一个字符串。
到目前为止,我的代码如下:
import csv
import datetime
casedate = '06052009'
MDAfile = "/atmomounts/home/grad/mserino/Desktop/"+casedate+"MDA.csv"
stormmidpoint = '200906052226' #midpoint in YYYYMMDDhhmm
relativetime = []
MDAlons = []
MDAlats = []
MDAdatetime = []
with open(MDAfile, 'rU') as f: #open to read in universal-newline mode
reader = csv.reader(f, dialect=csv.excel, delimiter=',')
for i,row in enumerate(reader):
if i == 0:
continue #skip header row
MDAlons.append(float(row[1]))
MDAlats.append(float(row[2]))
MDAdatetime.append(str(row[0])) #this is the array I'm dealing with now in the section below; each string is of the format YYYYMMDDhhmmss
## This is the section I'm having trouble with ##
for j in range(len(MDAdatetime)):
reltime = datetime.datetime.strptime(MDAdatetime[j],'%YYYY%mm%dd%HH%MM%SS') - datetime.datetime(stormmidpoint,'%YYYY%mm%dd%HH%MM')
retime.strftime('%MM') #convert the result to minutes
reativetime.append(reltime)
print relativetime
到目前为止,我一直收到错误:
ValueError: time data '20090605212523' does not match format '%YYYY%mm%dd%HH%MM%SS'
我正在尝试尽可能多地了解 datetime 模块。我已经看到其他一些帖子和资源提到 dateutil,但似乎 datetime 对我来说是最有用的。不过,我可能是错的,我感谢任何建议和帮助。如果我需要澄清任何事情或提供更多信息,请告诉我。
【问题讨论】:
-
In [1]:这是偏好问题,但我很懒,使用 dateutil.parser:
from dateutil.parser import parse as dateparsedateparse('200906052226')Out[1]:datetime.datetime(2009, 6, 5, 22, 26)
标签: python loops datetime math