Skip to main content
 首页 » 编程设计

python:从带有额外字符的日期时间字符串计算秒数

2025年05月04日40duanxz

我想为以下输入文件的每一行创建一个新列,其中包含自 1970 年以来的秒数:

timestamp, air_temp, rh, pressure, dir, spd 
2016-11-30T00:00:00Z,-36.50,56.00,624.60,269.00,5.80 
2016-11-30T01:00:00Z,-35.70,55.80,624.70,265.00,5.90 
2016-11-30T02:00:00Z,-34.80,56.00,625.00,266.00,6.30 

第一列代表时间戳,但它包含额外的字符“T”和“Z”。我当前的代码如下所示:

i = 0 
ip_file.readline() 
for line in ip_file: 
 
    line = line.strip() 
 
    year[i] = int(line[0:4]) 
    month[i] = int(line[5:7]) 
    day[i] = int(line[8:10]) 
    hour[i] = int(line[11:13]) 
 
    time[i] = (datetime(year[i],month[i],day[i],hour[i])-datetime(1970, 1, 1)).total_seconds() 
    i += 1 

这会返回我想要的,但如果输入文件很大,则需要很长时间。如果时间戳没有那些额外的字符,我会直接使用它而不是计算年、月、日和小时。有没有更好的办法?如有任何想法,我们将不胜感激。

请您参考如下方法:

而不是使用字符串切片。为什么不用逗号分割字符串?并使用 datetime 模块中的 strptime 方法将字符串 datetime 转换为 datetime 对象。

示例:

import datetime 
 
with open(path, "r") as infile: 
    for i in infile.readlines()[1:]: 
        dVal = i.strip().split(",")[0] 
        print (datetime.datetime.strptime(dVal, '%Y-%m-%dT%H:%M:%SZ')-datetime.datetime(1970, 1, 1)).total_seconds() 

输出:

1480464000.0 
1480467600.0 
1480471200.0