将datetime字符串转换为毫秒UNIX时间戳

时间:2017-05-12 07:31:41

标签: java python datetime time

我试图关联从java作业和linux性能监控工具perf获取的时序信息(特别是perf stat)。

使用获取来自java的定时信息 String tstamp0 = String.valueOf(System.currentTimeMillis());(这基本上是以纪元为单位的时间,以毫秒为单位) 而perf给出了过程开始的时间,后续记录只显示了经过的时间。

我想要做的是,将从perf stat获得的时间信息转换为毫秒,这就是我失败的地方。我在Python处理了这个问题。

这段代码向我提供了来自perf

的时间信息
tailit = "head -n 1 " + dataset_path
process = subprocess.Popen(tailit, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = process.communicate()
date_time = out.split("\n")[0].split(" ")[4:]
date = date_time[3] + "-" + date_time[0] + "-" +  date_time[1]
time = date_time[2]
#TIMESTAMP

INIT_TIME = datetime.datetime.strptime(date + ' ' + time, "%Y-%B-%d %H:%M:%S") + datetime.timedelta(seconds=0.01)
#df is pandas data frame
df['STAMPME'] = df['TCOUNT'].apply(lambda x: foobar(datetime.timedelta(seconds=x) + INIT_TIME))

这里foobar是将字符串转换为时间戳(以毫秒为单位),但它没有意义。

def foobar(INIT_TIME):
    d = datetime.datetime.strptime(str(INIT_TIME), "%Y-%m-%d %H:%M:%S.%f").strftime('%s')
    d_in_ms = int(d)*1000
    return (d_in_ms)

任何帮助将不胜感激。

编辑:先前的问题没有解决将java timestamp (currentTimeMillis())与日期时间关联的问题,以毫秒为单位。

例如:使用函数foobar: 如果INIT_TIME设置为2017-05-11 10:56:54.203,则返回值为1494493014000,而应为1494500214203

1 个答案:

答案 0 :(得分:1)

我认为找出问题所在。 看起来mosquitto_sub -h <brokerIP> -u <username> -P <password> -t 'home/device/$online' -v 函数在GMT + 2中返回时间,而java作业在foobar中返回时间。所以时间值为GMT,我可以解决它。