当前位置: 首页 > 面试题库 >

如何使用JSON.loads转换为Python日期时间对象?

何飞翰
2023-03-14
问题内容

我有一个JSON对象的字符串表示形式。

dumped_dict = '{"debug": false, "created_at": "2020-08-09T11:24:20"}'

当我使用此对象调用json.loads时;

json.loads(dumped_dict)

我懂了

{'created_at': '2020-08-09T11:24:20', 'debug': False}

这里没有错。但是,我想知道是否有一种方法可以将带有json.loads的上述对象转换为如下形式:

{'created_at': datetime.datetime(2020, 08, 09, 11, 24, 20), 'debug': False}

不久,我们能够在调用json.loads时将datetime字符串转换为实际的datetime.datetime对象吗?


问题答案:

到目前为止我的解决方案:

>>> json_string = '{"last_updated": {"$gte": "Thu, 1 Mar 2012 10:00:49 UTC"}}'
>>> dct = json.loads(json_string, object_hook=datetime_parser)
>>> dct
{u'last_updated': {u'$gte': datetime.datetime(2012, 3, 1, 10, 0, 49)}}


def datetime_parser(dct):
    for k, v in dct.items():
        if isinstance(v, basestring) and re.search("\ UTC", v):
            try:
                dct[k] = datetime.datetime.strptime(v, DATE_FORMAT)
            except:
                pass
    return dct

有关使用object_hook的更多参考:JSON编码器和解码器

在我的情况下,json字符串来自GET请求到我的REST
API。此解决方案使我可以透明地“正确安排日期”,而不必强迫客户和用户使用像__date__JSON
这样的硬编码前缀,只要输入字符串符合DATE_FORMAT,即:

DATE_FORMAT = '%a, %d %b %Y %H:%M:%S UTC'

正则表达式模式可能应该进一步完善

PS:如果您想知道,json_string是MongoDB / PyMongo查询。



 类似资料:
  • 问题内容: 我正在获取格式为“ 2009-05-28T16:15:00”的日期时间字符串(我相信这是ISO 8601)。一种可能的选择似乎是使用time.strptime元组的前六个元素并将其传递到datetime构造函数中来解析字符串,例如: 我还没有找到一种“清洁”的方法。有一个吗? 问题答案: 我更喜欢使用dateutil库进行时区处理和一般的可靠日期解析。如果要获得类似ISO 8601的字

  • 问题内容: 我有如下代码所示的变量。 使用python,如何将其转换为以下格式? 问题答案: import datetime >>> d = datetime.datetime.strptime(‘2011-06-09’, ‘%Y-%m-%d’) >>> d.strftime(‘%b %d,%Y’) ‘Jun 09,2011’ 在2.5版之前的Python中,您可以使用替换为,(这样(未测试)):

  • 问题内容: 是否有一个内置的转换方法为在Python,例如获得在指定日期的午夜?相反的转换很容易:有一个方法。 我真的必须手动打电话吗? 问题答案: 您可以使用;现在,您创建一个初始化为午夜的对象。

  • 问题内容: 我想将日期转换为时间戳,我的输入是。我用了 上面写着NaN ..有人能告诉你如何转换吗? 问题答案: var myDate = “26-02-2012”; myDate = myDate.split(“-“); var newDate = myDate[1]+”,”+myDate[0]+”,”+myDate[2]; console.log(new Date(newDate).getTi

  • 问题内容: 我有一个使用datetime.utcnow()创建并保存在数据库中的python datetime实例。 为了进行显示,我想使用默认的本地时区(例如,好像使用datetime.now()创建了datetime)将从数据库中检索到的datetime实例转换为本地datetime。 如何仅使用python标准库(例如,没有pytz依赖项)将UTC日期时间转换为本地日期时间? 似乎一种解决方

  • 问题内容: 我有一个日期时间格式的字段,当日期更好并且与数据库的其余部分更一致时,我想进行转换。无论如何,时间部分都是00:00:00。 如何在MySQL中做到这一点? 谢谢。 问题答案: 如果要在-Statement中使用,请使用运算符: 如果要在结构上更改表,只需将数据类型更改为(当然,只有在不影响依赖于此字段的应用程序的情况下,才这样做)。 两者都将消除时间部分。