【问题标题】:Convert dictionary key values from UNIX time to human readable time将字典键值从 UNIX 时间转换为人类可读时间
【发布时间】:2018-11-03 18:37:18
【问题描述】:

我有一个带有字典的变量:

EG:

myVariableDictionary = {'result':{'result':[{'Time':1580619600},{'Time':1580619600}]}}

等等..我想将unix时间戳转换为人类可读的时间戳。

如果我拉一个键,我可以这样做:

placeholderVariable= myVariableDictionary['result']['result'][0]['Time']
myNewTimeVariable = datatime.datatime.fromtimestamp(placeholderVariable)

但我想在值的任何迭代中就地执行此操作。键名始终相同,并且只是嵌套。

【问题讨论】:

标签: python python-3.x datetime dictionary unix-timestamp


【解决方案1】:

这是一种方式:

from datetime import datetime

d = {'result':{'result':[{'Time':1580619600},{'Time':1580619600}]}}

for i in d['result']['result']:
    i['Time'] = datetime.fromtimestamp(i['Time'])

print(d)

{'result': {'result': [{'Time': datetime.datetime(2020, 2, 2, 5, 0)},
                       {'Time': datetime.datetime(2020, 2, 2, 5, 0)}]}}

【讨论】:

  • 这非常接近!结果是 {'Time': datetime.datetime(2015, 6, 27, 15, 1, 9)} 所以它实际上是在值中包含 datetime.datetime。
  • 如果需要字符串输出,可以使用datetime.fromtimestamp(i['Time']).strftime('%Y-%m-%d')
【解决方案2】:

您可以这样做 - 假设您的结构中只有字典和列表。否则,您可能需要在这些 if 语句中添加其他情况...

from datetime import datetime
def time_converter(data):
    for k, v in data.items():
       if isinstance(v, (dict,)):
           data[k] = time_converter(v)
       elif isinstance(v, (list,)):
           data[k] = [time_converter(item) for item in v]
       elif k.lower() == 'time':
           data[k] = datetime.fromtimestamp(v)
    return data

d = {'result':{'result':[{'Time':1580619600},{'Time':1580619600}]}}

print(time_converter(d))

请注意 time_converter 递归调用自身。请记住,根据您传入的对象的大小和引用(即自引用或非常大的输入),您最终可能会遇到运行时错误。如果您的数据集相对易于管理且简单明了,那么这不是问题。

【讨论】:

    猜你喜欢
    • 2013-01-13
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 2020-09-29
    • 2017-04-06
    • 2018-11-02
    相关资源
    最近更新 更多