微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将纪元时间值转换为当地时间?

如何解决如何将纪元时间值转换为当地时间?

问题是如何在每一行中传递纪元时间的数值并转换为当地时间。

输入文件log_data.csv

id: 535,epoch_time: 1611773844,nsecs: 158737495,state: 2,status: 1
id: 536,nsecs: 258731299,status: 1
id: 537,nsecs: 358585677,state: 4,status: 3
id: 538,nsecs: 458462033,status: 1

代码片段:

import datetime

def time(data):
 fmt = "%Y-%m-%d %H:%M:%s"
 t = datetime.datetime.fromtimestamp(float(s)/1000.)
 print t.strftime(fmt)

def read_comlumn():
 for line in open("log_cleaning_3_final.log"):
     columns = line.split(',')

解决方法

您可以使用 csv 模块并从这里开始

import csv
import datetime

def convert(data):
  fmt = "%Y-%m-%d %H:%M:%S"
  t = datetime.datetime.fromtimestamp(float(data)/1000.)
  return t.strftime(fmt)

with open('log_cleaning_3_final.log','r') as f:
    csv_data = csv.reader(f)
    csv_lines = list(csv_data)

for line in csv_lines:
  line[1] = convert(line[1].split(':')[1].strip())

with open('log_cleaning_3_final.log','w') as f:
  writer = csv.writer(f)
  writer.writerows(csv_lines)
,

你从来没有真正说过你想用转换后的数据做什么——所以我猜到了,下面的代码把它写到一个名为 log_cleaning_3_final.log 的文件中。我还认为您没有提到您使用的是哪个版本的 Python,但我怀疑它是 2.x 并且已经编写了代码,因此它可以在该版本中运行。

from collections import OrderedDict as odict
import datetime

def time(data):
    t = datetime.datetime.fromtimestamp(float(data)/1000.)
    return t.strftime("%Y-%m-%d %H:%M:%S")

def read_columns(filename):
    columns = []
    with open(inp_filename) as inp:
        for line in inp:
            row = dict([map(str.strip,col.strip().split(':')) for col in line.split(',')])
            row['epoch_time'] = time(row['epoch_time'])  # Convert to local time.
            columns.append(row)
    return columns

def write_columns(cols,filename):
    fieldnames = 'id epoch_time nsecs state status'.split()
    with open(filename,'w') as outp:
        for row in cols:
            line = odict([(fieldname,row[fieldname]) for fieldname in fieldnames])
            line = ','.join('{}: {}'.format(k,v) for k,v in line.items())
            outp.write(line + '\n')


cols = read_columns("log_data.csv")
write_columns(cols,"log_cleaning_3_final.log")
print('done')

运行上面的log_cleaning_3_final.log输出文件的内容:

id: 535,epoch_time: 1970-01-19 07:42:53,nsecs: 158737495,state: 2,status: 1
id: 536,nsecs: 258731299,status: 1
id: 537,nsecs: 358585677,state: 4,status: 3
id: 538,nsecs: 458462033,status: 1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。