Python搜索Date的JSON值

时间:2018-04-14 01:16:52

标签: python json

好的,我正在寻找有关梳理json数据的最佳方法的建议和建议,以查找今天的日期/时间并返回正确的值。

以下是json数据的示例:

[
    {
        "startDateTime": "2018-04-11T14:17:00-05:00",
        "endDateTime": "2018-04-11T14:18:00-05:00",
        "oncallMember": [
            "username1"
        ],
        "shiftType": "historical"
    },
    {
        "startDateTime": "2018-04-11T14:18:00-05:00",
        "endDateTime": "2018-04-16T08:00:00-05:00",
        "oncallMember": [
            "username2"
        ],
        "shiftType": null
    },
{
        "startDateTime": "2018-04-16T08:00:00-05:00",
        "endDateTime": "2018-04-23T08:00:00-05:00",
        "oncallMember": [
            "username1"
        ],
        "shiftType": null
    },
    {
        "startDateTime": "2018-04-23T08:00:00-05:00",
        "endDateTime": "2018-04-30T08:00:00-05:00",
        "oncallMember": [
            "username2"
        ],
        "shiftType": null
    },
......continues on for the year

开始/结束日期设置为成员之间的每周轮换,但是当设置或更改例外时,开始/结束日期可能每天或任何其他时间变化。我想要做的是检查今天的日期,找到当前的" oncallMember"。我不确定如何搜索今天的开始和结束时间。

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

模块箭头可能会有所帮助。 首先,获取今天的时间戳范围

import arrow
today = arrow.now()
(day_start,day_end) = today.span('day')
day_start_timestamp = day_start.timestamp
day_end_timestamp = day_end.timestamp

然后你需要将详细数据解析为时间戳,但你的原始数据看起来像“2018-04-16T08:00:00-05:00”的持续时间,也许你需要像“2018”那样切片部分-04-16T08:00:00“,并使用箭头将其解析为时间戳,如

raw = "2018-04-16T08:00:00"
FORMAT = "YYYY-MM-DDTHH:mm:SS"
obj = arrow.get(raw,FORMAT)
obj_ts = obj.timestamp

然后你需要判断 obj_ts 是否在day_start_timestamp和day_end_timestamp

之间的范围内

但如果您需要运行数天的代码,则需要每天更改时间戳范围

答案 1 :(得分:0)

List<Task> x = new List<Task>(); foreach(var s in myCollectionOfObject) { // Note there is no await here. Just collection the Tasks x.Add(s.DoSomethingAsync()); } await Task.WhenAll(x); json个库

使用datetime库按json读取json并将其转换为json.loads

并且dictionarystr转换使用datetimedatetime

dateutil.parser.parse

获得日期时间后,请进一步编码今天开始结束日期的比较并返回import json from dateutil.parser import parse from datetime import datetime dict_ = json.loads(json_str) # json str is the json you mentioned startDate = dict_[0]['startDateTime'] # '2018-04-11T14:17:00-05:00' date = parse(startDate) # datetime.datetime(2018, 4, 11, 14, 17, tzinfo=tzoffset(None, -18000))