2013-09-26 45 views
1

我想創建一個函數,我使用各種函數從日期時間模塊,如strftime,strptime和timedelta。Python - 定義全球名稱datetime

我覺得我已經嘗試了一切,但每次我告訴本報:

 4 date = '2012.09.07' 
     5 
----> 6 q = net(date) 
     7 print q 

/Users/fb/Documents/Python_files/test_function.pyc in net(date) 
     1 def net(date): 
----> 2  b = datetime.strptime(a, '%Y.%m.%d') 
     3  c = b.strftime('%d:%m:%y') 
     4  return c 

NameError: global name 'datetime' is not defined 

我讀過,其他人可能遇到同樣的問題,因爲我,即「它工作在Python解釋器但不在腳本中「。任何人都可以幫忙嗎?

+1

什麼是變量'a'在這裏'b = datetime.strptime(a,'%Y.%m。%d')'? –

回答

5

您需要導入datetime對象你的模塊在:

from datetime import datetime 

test_function.py頂部。

在您的解釋器會話中,您可能已經導入了該對象。然後

你的整個模塊的樣子:

from datetime import datetime 

def net(date): 
    b = datetime.strptime(date, '%Y.%m.%d') 
    c = b.strftime('%d:%m:%y') 
    return c 

,我代替adate,因爲這是實際的參數傳遞給函數的名稱。

注意,datetime模塊包含datetime,這是這裏進口的嘛。如果您還需要訪問datetimedelta類,請將該模塊明確導入(from datetime import datetime, date, timedelta)或導入只需,並參考內容作爲屬性(import datetime,然後datetime.datetime.strptime()datetime.date.today()等)。

+1

很好的答案,但可能包含一個警告,「datetime import datetime」會掩蓋模塊名稱,並且會導致稍後無法訪問其他類,如Date和TimeDelta。這在SO上是一個常見問題。 – tdelaney