Python:计算循环中日期时间对象之间的差异

标签 python loops datetime math

使用Python 2.7,我尝试创建一个相对时间数组,其中相对时间是雷暴中间和 Storm 期间其他时间之间的差异。最终,我希望我的相对时间数组的格式为 - 分钟、0 和 + 分钟(其中 - 分钟是 Storm 中间之前的分钟,0 是 Storm 中间的分钟,+ 分钟是 Storm 中间之后的分钟) Storm 中间)。我认为循环是执行此操作的最有效方法。我已经有一个一维数组 MDAdatetime,其中填充了我提到的其他 Storm 时间(作为字符串)。我在代码的开头指定了 Storm 的中心,它也是一个字符串。

到目前为止,我的代码如下:

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'

我正在尝试尽可能多地了解日期时间模块。我看到其他一些帖子和资源提到了 dateutil,但似乎 datetime 对我来说最有用。不过,我可能是错的,我感谢任何建议和帮助。如果我需要澄清任何事情或提供更多信息,请告诉我。

最佳答案

%Y2016 匹配。不是 %YYYY,月份、日期等类似。

因此,您的格式匹配器应该是 %Y%m%d%H%M%S

类似这样的事情:

datetime.datetime.strptime("20090605212523", "%Y%m%d%H%M%S")

演示

>>> datetime.datetime.strptime("20090605212523", "%YYYY%mm%dd%HH%MM%SS")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_strptime.py", line 325, in _strptime
    (data_string, format))
ValueError: time data '20090605212523' does not match format '%YYYY%mm%dd%HH%MM%SS'
>>> datetime.datetime.strptime("20090605212523", "%Y%m%d%H%M%S")
datetime.datetime(2009, 6, 5, 21, 25, 23)

关于Python:计算循环中日期时间对象之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35927498/

相关文章:

python - 为什么我在 "Unknown column ' 中得到 'where clause' Jacob'?

python - 找不到 Flask_APP 环境变量

c++ - 为什么在 vector 循环中使用 '!="比使用 '<' 更好? (C++)

javascript - 使用javascript创建循环来删除pdf中的书签

java - 创建一个datetime对象以表示实例,而不管时区如何进行字符串操作

python - 如何在 Python 中向量化增量

python - 如何将球反射到 Racket 上

arrays - 在 CL 的 dotimes 循环中使用 aref?

夏令时更改期间的 Java Calendar.roll 和 CST

c# - 如何计算半小时或一小时到 "next"的剩余分钟数?