2013-04-04 2 views
1

Я не могу понять, почему это не удается, может кто-то пожалуйста, объясните:питон отладки простой DateTime объект

import datetime 

def test(timestamp): 
    xt = datetime(2013, 4,4) 
    dt = datetime.strptime(timestamp, '%d/%m/%Y %H:%M:%S') 
    print (xt,dt) 

test('04/04/2013 08:37:20') 

Ошибка:

 
Traceback (most recent call last): 
    File "", line 12, in 
    File "", line 5, in test 
TypeError: 'module' object is not callable 

Это, кажется, работает нормально с from datetime import datetime вместо этого. Я не понимаю, в чем разница.

Спасибо.

ответ

4

Поскольку в datetime модуле есть datetime() функция, но вы не называли его (вместо пытался вызвать модуль, поэтому вы получили TypeError: 'module' object is not callable).

import datetime 
def test(timestamp): 
    xt = datetime(2013, 4,4) # Problem is this line. 
    dt = datetime.strptime(timestamp, '%d/%m/%Y %H:%M:%S') 
    print (xt,dt) 

test('04/04/2013 08:37:20') 

Чтобы исправить строку, изменить его на:

xt = datetime.datetime(2013,4,4) 

Причина from datetime import datetime работал потому, что вы импортировали определенную функцию, и поэтому вам не нужно будет делать datetime.datetime().

+0

Линия ниже, также должен быть изменен на 'дт = datetime.datetime.strptime (метки времени, '% г /% м /% Y% H:% M:% S')' для запуска для меня. – StuGrey

1

datetime является одновременно модулем И классом в этом модуле. В вашем примере вам нужно datetime.datetime.

1

The

xt = datetime(2013, 4,4) 

должен быть

xt = datetime.datetime(2013, 4,4) 

Здесь datetime это имя модуля. Полное имя класса: datetime.datetime.

1

Здесь datetime может обратиться к модулю или класса внутри модуля, так что вы должны неоднозначность

import datetime 

def test(timestamp): 
    xt = datetime.datetime(2013, 4,4) 
    dt = datetime.datetime.strptime(timestamp, '%d/%m/%Y %H:%M:%S') 
    print (xt,dt) 

test('04/04/2013 08:37:20') 

дает следующий результат:

(datetime.datetime(2013, 4, 4, 0, 0), datetime.datetime(2013, 4, 4, 8, 37, 20))

1

datetime является DateTime модуль , datetime.datetime - дата и время тип:

import datetime 

def test(timestamp): 
    xt = datetime.datetime(2013, 4,4) 
    dt = datetime.datetime.strptime(timestamp, '%d/%m/%Y %H:%M:%S') 
    print (xt,dt) 
Смежные вопросы