尝试解析 JSON 日期并提交到另一个系统(Python)

0 投票
1 回答
809 浏览
提问于 2025-04-17 20:47

我正在尝试写一个脚本,从一个叫Insightly的系统获取项目数据,然后把这些数据发送到另一个叫10000ft的系统。简单来说,我想把一个系统中新创建的项目,在另一个系统中也创建一个相同的项目。两个系统都有“项目”这个概念。

我对这些事情非常陌生,但我只想从Insightly获取一些特定的项目参数,比如项目名称(PROJECT_NAME)、组织ID(LINKS:ORGANIZATION_ID)和创建日期(DATE_CREATED_UTC)等等。

我打算加一些逻辑,只发送那些创建日期在昨天之后的项目,但我对如何设置脚本来抓取JSON字符串并把它们转成Python变量(把JSON中的日期字符串转成日期时间格式)一无所知。这是我现在的代码。我只是简单地打印出一些我需要的变量,以便熟悉这段代码。

import urllib, urllib2, json, requests, pprint, dateutil
from dateutil import parser
import base64


#Set the 'Project' URL
insightly_url = 'https://api.insight.ly/v2.1/projects'
insightly_key = 
api_auth = base64.b64encode(insightly_key)


headers = {
                'GET': insightly_url,
                'Authorization': 'Basic ' + api_auth

                }
req = urllib2.Request(insightly_url, None, headers)

response = urllib2.urlopen(req).read()

data = json.loads(response)
for project in data:
    project_date = project['DATE_CREATED_UTC']
    project_name = project['PROJECT_NAME']
    print project_name + " " + project_date

任何帮助都会很感激。

更新:

我已经更新了之前的代码,内容如下:

for project in data:
    project_date = datetime.datetime.strptime(project['DATE_CREATED_UTC'], '%Y-%m-%d %H:%M:%S').date()
    if project_date > (datetime.date.today() - datetime.timedelta(days=1)):
        print project_date
    else:
        print 'No New Project'

这段代码返回了所有在昨天之后创建的项目,但现在我需要把这些项目单独提取出来,并发送到另一个系统。

1 个回答

0

这里有一个例子,展示如何从一个解析过的字符串中返回一个 datetime 对象。我们将使用 datetime.strptime 这个方法来实现这个功能。你可以查看这个 格式代码列表,里面有你可以用来创建格式字符串的各种代码。

>>> from datetime import datetime
>>> date_string = '2014-03-04 22:30:55'
>>> format = '%Y-%m-%d %H:%M:%S'
>>> datetime.strptime(date_string, format)
datetime.datetime(2014, 3, 4, 22, 30, 55)

正如你所看到的,datetime.strptime 方法会返回一个 datetime 对象。

撰写回答