Pyspark增加了几秒钟的时间

时间:2016-10-19 10:24:56

标签: python datetime pyspark

我想添加几秒钟的时间,但我没有成功。这是我的例子

import datetime
str1 = sc.parallelize(["170745","140840"])
aa = str1.map(lambda l: datetime.datetime.strptime(l, '%H%M%S').strftime('%H:%M:%S'))

产量

['17:07:45', '14:08:40'] 

但我想要的是

['17:07:52', '14:08:47']

如何为每个转换时间添加7秒。我知道timedelta有,但不确定。

2 个答案:

答案 0 :(得分:2)

将字符串转换为日期后,您可以添加datetime.timedelta(0,7)

import datetime
str1 = sc.parallelize(["170745","140840"])
aa = str1.map(lambda l: (datetime.datetime.strptime(l, '%H%M%S') + datetime.timedelta(0,7)).strftime('%H:%M:%S'))

aa.collect()返回:

['17:07:52', '14:08:47']

用常规函数替换lambda,可以说更容易理解:

import datetime

def processdate(timeString):
    date = datetime.datetime.strptime(timeString, '%H%M%S')
    date += datetime.timedelta(0,7)
    return date.strftime('%H:%M:%S')    

str1 = sc.parallelize(["170745","140840"])    
aa = str1.map(processdate)

答案 1 :(得分:0)

您可以使用“+ datetime.timedelta(seconds = 7)”来解决此问题。

(datetime.datetime.strptime(l, '%H%M%S') + datetime.timedelta(seconds=7)).strftime('%H:%M:%S')

如果要计算两次之间的秒数,请直接减去两个datetime.datetime对象。

import datetime
starttime = datetime.datetime.now()
endtime = datetime.datetime.now()
print (endtime - starttime).seconds