我如何在isoformate中获得第二天的日期时间

时间:2017-08-09 10:20:17

标签: python datetime

我正在使用Google Calendar API 我已经阅读了快速入门

>     eventsResult = service.events().list(
             calendarId='primary', timeMin=now, maxResults=10, singleEvents=True,
             orderBy='startTime').execute()

但是我尝试添加一个timeMax参数来过滤我得到的事件 我希望从现在到今天结束这个活动 我从:

开始
> import datetime
 now = datetime.datetime.now()
然后我得到了:

AttributeError: module 'datetime' has no attribute 'now'

我读到大多数编码人员对datetime.datetime感到困惑。

3 个答案:

答案 0 :(得分:0)

我建议改用模块time。使用没有参数传递的函数localtime,您可以生成精确到秒的时间戳。

示例

>>> import time
>>> ts = time.localtime()
>>> print ts
time.struct_time(tm_year=2017, tm_mon=8, tm_mday=9, tm_hour=12, tm_min=39, tm_sec=50, tm_wday=2, tm_yday=221, tm_isdst=0)
>>> print ts.tm_year, ts.tm_mon, ts.tm_mday
2017 8 9
>>> print ts[3:6]
(12, 39, 50)

如您所见,您有几种方法可以从时间戳中提取信息。

<强> [编辑]

如果时间戳的ISO格式很重要,请忽略我的答案......;)

答案 1 :(得分:0)

>>> import datetime as dt
>>> from datetime import date,timedelta
>>> dt.datetime.today() - timedelta(days=-1)
#datetime.datetime(2017, 8, 10, 18, 16, 29, 785131)
>>> Td = dt.datetime.today() - timedelta(days=-1)
>>> Td
#datetime.datetime(2017, 8, 10, 18, 16, 41, 786500)
>>> Td = Td.isoformat()
>>> Td
#'2017-08-10T18:16:41.786500'
  
    

&GT;

  

答案 2 :(得分:0)

我终于用datetime解决了这个问题。

import datetime

now = datetime.datetime.now()
night = now.replace(hour=23, minute=59)

#I'm at UTC+8
utcNow = now-datetime.timedelta(hours=8)
utcnight = night - datetime.timedelta(hours=8)

print (utcNow.isoformat() + 'Z')
print(utcnight.isoformat() + 'Z')
  

2017-08-10T02:48:16.413384Z
  2017-08-10T15:59:16.413384Z

当地时间是:
2017-08-10 10:48:16.413384Z
2017-08-10 23:59:16.413384Z