java - 将日期时间字符串转换为毫秒 UNIX 时间戳

标签 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 时间戳 (currentTimeMillis()) 与日期时间(以毫秒为单位)相关联的问题。

例如:使用函数 foobar: 将 INIT_TIME 设置为 2017-05-11 10:56:54.203 时,返回值为 1494493014000,而它应该是 1494500214203

最佳答案

我想我已经解决了这个问题。 看起来 foobar 函数返回的是 GMT+2 时间,而 java 作业返回的是 GMT 时间。因此,只要时间增量为 +2,我就可以解决它。

关于java - 将日期时间字符串转换为毫秒 UNIX 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43931906/

相关文章:

java - 从 Java DSL 可视化 Camel 路由

delphi - 在delphi中获取互联网时间

Python - 使用字典检查查询并检索答案

python - 使用YouTube API和cron将视频上传到YouTube时的身份验证问题

python - pandas :pd. date_range 输出错误

r - 将日期时间从字符转换为 POSIXct 对象

java - 如何在不知道该单词的情况下更改用户输入的中间字符?

java - 如何在 Espresso 的 RecyclerView 中断言?

java - 替换所有特殊字符

python - 如何在 Python 中生成加密安全的字母数字字符串?