【问题标题】:extract datetime from dictionary in python从python中的字典中提取日期时间
【发布时间】:2020-11-26 08:14:50
【问题描述】:

我从 API 请求中收到了一个包含许多键值的字典,其中有一个包含日期时间格式。简化字典是:

d = {'_date': datetime.datetime(2020, 8, 5, 8, 47, 25, tzinfo=tzoffset(None, -21600))}

结果期望是变量中的d = {'_date': '2020-08-05 08:47:25' },供以后使用。

导入datetimetzoffset from dateutil.tz后结果可以用print(datetime.datetime(2020, 8, 4, 4, 10, 12, tzinfo=tzoffset(None, -21600)).strftime('%Y-%m-%d %H:%m'))打印

我试图做的是存储在一个变量中,比如v= d['_date'],但它将完整的表达式存储为字符串并且它不评估表达式。

这是获取 dict 值、评估它并存储在v 变量中的正确方法,我的意思是print(v) --> 2020-08-05 8:47。测试在这里:

Python 3.8.3 (default, Jul  2 2020, 16:21:59) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> from dateutil.tz import tzoffset
>>> d = {'_date': datetime.datetime(2020, 8, 5, 8, 47, 25, tzinfo=tzoffset(None, -21600))}
>>> d
{'_date': datetime.datetime(2020, 8, 5, 8, 47, 25, tzinfo=tzoffset(None, -21600))}
>>> v = d['_date']
>>> v
datetime.datetime(2020, 8, 5, 8, 47, 25, tzinfo=tzoffset(None, -21600))
>>> print(datetime.datetime(2020, 8, 5, 8, 47, 25, tzinfo=tzoffset(None, -21600)))
2020-08-05 08:47:25-06:00
>>> 

提前致谢

【问题讨论】:

  • 尝试放一些代码,这样错误可以重现。
  • 您说您有上面定义的d 并尝试了v = d['_date'] - 但如果您实际运行该代码,v 包含一个日期时间。所以不清楚为什么你认为它包含一个字符串,除非你提供可以证明问题的工作代码。
  • 我编辑了问题并添加了运行它的代码
  • v = d['_date'].replace(tzinfo=None).isoformat(' ') ?
  • 然后只需执行d['_date'] = d['_date'].replace(tzinfo=None).isoformat(' ') 来修改现有的d 或创建一个新的,例如作为d_new = {'_date': d['_date'].replace(tzinfo=None).isoformat(' ')}

标签: python datetime datetime-format python-datetime


【解决方案1】:

你需要摆脱偏移,只需使用:

d = {'_date': datetime.datetime(2020, 8, 5, 8, 47, 25, tzinfo=tzoffset(None, -21600))}
print  d['_date'].replace(tzinfo=None)
>>>2020-08-05 08:47:25

【讨论】:

  • 我试图将结果存储在一个变量中以备后用。删除 tzinfo 这是结果>>> v = d['_date'].replace(tzinfo=None) >>> v datetime.datetime(2020, 8, 5, 8, 47, 25)
  • 什么意思?你是怎么打印的?您是否将其存储在文件中?
  • 我想将值 2020-08-05 08:47:25 保存在一个变量中,如果我这样做,屏幕上会显示 `print(d['_date'].replace(tzinfo=None)' 但它不能使用继续。期望结果是 d = {'_date': '2020-08-05 08:47:25' }
  • @dannisis 您正在打印的是一个日期时间对象:您的解释器正在“按原样”显示该对象......所以如果您想以可读格式查看它,请将其打印为字符串.如果您的脚本“无法继续”,那么您需要发布您的完整代码,让我重新创建问题,或者查看错误。
  • 非常感谢您在 cmets 上提供帮助
猜你喜欢
  • 2021-01-05
  • 1970-01-01
  • 2020-12-19
  • 2020-08-14
  • 2020-06-27
  • 2011-03-31
  • 1970-01-01
  • 2023-01-04
  • 2014-11-20
相关资源
最近更新 更多