2014-03-04 37 views
0

我想寫一個腳本來從Insightly中獲取項目數據併發布到10000ft。實質上,我想在一個系統中創建任何新創建的項目,並在另一個系統中創建同一個實例。兩者都有'項目'的概念試圖解析JSON日期POST到另一個系統(Python)

我對此非常陌生,但我只是想在Insightly中將特定項目參數傳遞給其他系統(PROJECT_NAME,LINKS:ORGANIZATION_ID,DATE_CREATED_UTC)等等。我計劃添加邏輯到只有POST項目與DATE_CREATED_UTC>昨天,但我無法如何設置腳本抓住JSON字符串和創建python變量(JSON日期字符串datetime)。這是我目前的代碼。我只是打印出我需要的一些變量以適應代碼。

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' 

這將返回昨天之後創建的每一個項目,但現在我需要隔離這些項目並將它們發佈到其他系統

+0

注意:'data.today()'返回當地時區(不是UTC)的日期。 – jfs

回答

0

以下是從解析的字符串中返回datetime對象的示例。我們將使用datetime.strptime方法來完成此操作。以下是可用於創建格式字符串的list of the format codes

>>> 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對象。

+0

Thanks @tsroten,我用以下代碼更新了以前的代碼:對於項目中的數據: project_date = datetime.datetime.strptime(project ['DATE_CREATED_UTC'],'%Y-%m-%d%H:%M (日期時間.today() - datetime.timedelta(天= 1)): print project_date else: print'No New Project'這給了我每個項目與昨天后創建的日期。我現在需要隔離這些項目並將它們發佈到新系統中 – user3379584