【问题标题】:Convert a datetime string to millisecond UNIX time stamp将日期时间字符串转换为毫秒 UNIX 时间戳
【发布时间】:2017-10-11 10:18:48
【问题描述】:

我正在尝试关联从 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

【问题讨论】:

标签: java python datetime time


【解决方案1】:

我想我找到了问题所在。 看起来foobar 函数在 GMT+2 中返回时间,而 java 作业在 GMT 中返回时间。所以使用+2 的时间增量,我可以解决它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2016-08-01
    相关资源
    最近更新 更多