如何解决创建的事件' Calendar API升级导致时间不匹配?

时间:2015-08-21 14:49:03

标签: python postgresql google-api google-calendar-api google-api-python-client

作为参考,我的时区是东部 - 纽约。

我将事件从PostgreSQL数据库插入到Google日历中。我从6月初开始使用UTC-4,当时我的应用程序终于从v2移到了v3,并且在v2中运行了几年。一直到8月18日,这给了我正确的时间。在8月18日,时间关闭了一个小时,所以我将设置更改为UTC-5。这工作了大约2个小时,然后我不得不将其重置为UTC-4。

今天,8月21日,它再次关闭一小时,我已将UTC设置为-5。除了一小时休息的事件和有时需要更改的UTC之外,事件将按原样插入。我的服务器上的系统时间是正确的。

有关正在发生的事情的任何想法?

我的一些代码段:

#get an event from a PostgreSQL database to insert into a Google Calendar
curs.execute("SELECT c_event_title,c_name,c_event_date,c_event_starttime,c_event_endtime,c_department,seat_arrange,c_attendee_count from sched_421 where sched_id_421=%i;" %recnum)

mit=curs.fetchall()  # mit IS NOW ALL THE RESULTS OF THE QUERY
for myrec in mit:    #  FOR THE ONE RECORD (EVENT) IN THE QUERY RESULTS

    myend_time = time.strftime("%I:%M %p", time.strptime(str(myrec[4]),"%H:%M:%S"))
    if myend_time[0]=='0':       # Remove leading zero for 01:00 - 09:00
        myend_time = myend_time[1:]

    title        = ' - %s %s - Group:%s' %(myend_time,myrec[0],myrec[5])
    mycontent    = myrec[0]+' - '+ myrec[5]
    content      = mycontent
    where        = where_dict[room_calendar]

    #  THIS IS WHERE THE UTC IS, SOMETIMES 4 WORKS SOMETIMES 5 WORKS
    start_time   = '%sT%s-05:00' %(myrec[2],myrec[3])      #  Google format
    end_time     = '%sT%s-05:00' %(myrec[2],myrec[4])      #  Google format

    myend_time   = '%s' %myrec[4]                    #  User format (am/pm)
    seat_arrange = '\nSeating - %s' %str(myrec[6])
    attendee_count = '\nNumber of participants: %s' %str(myrec[7])
    descript       = str(myrec[0]) + '   ' + seat_arrange + attendee_count+ "\n Created By: me@somewhere.com"

# upload the event to the calendar
created_event = service.events().insert(calendarId=calendar_dict[room_calendar], body=event).execute()

1 个答案:

答案 0 :(得分:0)

我不得不更改此代码:

#  THIS IS WHERE THE UTC IS, SOMETIMES 4 WORKS SOMETIMES 5 WORKS
start_time   = '%sT%s-05:00' %(myrec[2],myrec[3])      #  Google format
end_time     = '%sT%s-05:00' %(myrec[2],myrec[4])      #  Google format

to(检查事件是否在夏令时期间,v2不需要这样做)

if bool (pytz.timezone('America/New_York').dst(datetime.datetime(myrec[2].year,myrec[2].month,myrec[2].day), is_dst=None)):
  utc_offset = '4'
else:
  utc_offset = '5'

start_time   = '%sT%s-0%s:00' %(myrec[2],myrec[3],utc_offset)
end_time     = '%sT%s-0%s:00' %(myrec[2],myrec[4],utc_offset)