2013-06-09 1 views
0
time1 = datetime.now(); 
time1 -= time1; 
time2 = datetime.now(); 
time2 -= time2; 

То, как я пытаюсь определить дату и время равным нулю. Каков правильный способ сделать это?Как определить объект datetime в Python?

То, что им пытаются сделать:

import urllib2 
from datetime import datetime 

time1 = datetime.now(); 
time1 -= time1; 
time2 = datetime.now(); 
time2 -= time2; 
for i in range(0, 5): 
    x = datetime.now() 
    response = urllib2.urlopen("http://www.google.com") 
    time1 += datetime.now() - x 
    x = datetime.now() 
    response = urllib2.urlopen("http://facebook.com") 
    time2 += datetime.now() - x 
print time1 
print time2 

это работает, но я считаю, что это неправильный способ сделать это.

+1

time1, time2 (после "time1 - = time1" выполняется оператор) не является объектом datetime. Это объект timedelta. То, что вам нужно, это zero timedelta, вы можете сделать это с timedelta (0). – falsetru

+0

NameError: name 'timedelta' не определен –

+0

timedelta из модуля даты и времени. Сначала импортируйте его. («from datetime import datetime») – falsetru

ответ

0

Как отмечается в документе, метод строительства заключается в следующем:

datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]) 

И datetime.MINYEAR является 1, что означает минимальное значение года 1. Таким образом, вы не можете определить datetime равным Zero. С вашего метода:

time1 = datetime.now(); 
time1 -= time1; 

Объект time1 изменяется на datetime.timedelta не datetime.datetime объект.

>>> time1 = datetime.datetime.now(); 
>>> time1 
datetime.datetime(2013, 6, 9, 11, 13, 3, 57000) 
>>> type(time1) 
<class 'datetime.datetime'> 
>>> time1 -= time1; 
>>> time1 
datetime.timedelta(0) 
>>> type(time1) 
<class 'datetime.timedelta'> 

Благодаря @falsetru, метод для определения timedelta как ноль, мы должны сделать так:

zero = timedelta(0) 
+0

ОК, тогда, зачем правильно определять datetime.timedelta, равную нулю? –

+1

@Nirock, из datetime import timedelta; zero = timedelta (0) – falsetru

0
from datetime import datetime, timedelta 
import urllib2 

def benchmark(url, count=5): 
    elapsed = timedelta(0) 
    for i in range(count): 
     time1 = datetime.now() 
     u = urllib2.urlopen(url) 
     try: 
      u.read() 
     finally: 
      u.close() 
     time2 = datetime.now() 
     elapsed += time2 - time1 
    return elapsed 

for url in ("http://www.google.com", "http://facebook.com"): 
    print url 
    print benchmark(url) 
+0

Это похоже на хорошую альтернативу. –