2017-09-06 9 views
-1

Pythonスクリプトからエラーが発生しました。日付が渡されたときに問題が発生しているか、インポートされたdatetimeモジュールから間違ったメソッドを使用しているためです。日時関数の動作が停止しました

コード

import webapp2 
import json 
import urllib 
import urllib2 
from datetime import datetime, timedelta 

from google.appengine.ext import ndb 
from google.appengine.api import users 

import db 
import shift_calendar 
import templates 
import authenticate 


def is_BST(input_date): 
    if input_date.month in range(4,9): 
     return True 
    if input_date.month in [11,12,1,2]: 
     return False 
    # Find start and end dates for current year 
    current_year = input_date.year 

    for day in range(25,32): 
     if datetime.datetime(current_year,3,day).weekday()==6: 
      BST_start = datetime.datetime(current_year,3,day,1) 
     if datetime.datetime(current_year,10,day).weekday()==6: 
      BST_end = datetime.datetime(current_year,10,day,1) 

    if (input_date > BST_start) and (input_date < BST_end): 
     return True 

    return False 

エラー

if datetime.datetime(current_year,3,day).weekday()==6: 
AttributeError: type object 'datetime.datetime' has no attribute 'datetime' 

上記スクリプトにdatetime.now()を通過している関数は、このある補遺

if is_BST(datetime.now()) == True: 
    displaytime = (datetime.now() + timedelta(hours=1)).strftime('%H:%M:%S') 
    today = (datetime.now() + timedelta(hours=1)).strftime('%Y-%m-%d') 
    starthour = (datetime.now() + timedelta(hours=1)).strftime('%H') 
    timenow = (datetime.now() + timedelta(hours=1)).strftime('%H') 
    endhour = (datetime.now() + timedelta(hours=2)).strftime('%H') 
else: 
    displaytime = datetime.now().strftime('%H:%M:%S') 
    starthour = datetime.now().strftime('%H') 
    today = datetime.now().strftime('%Y-%m-%d') 
    timenow = datetime.now().strftime('%H') 
    endhour = (datetime.now() + timedelta(hours=1)).strftime('%H') 
+0

downvoted誰でも、これは改善を示唆するコメントを残していた場合、それはいいだろう –

+0

プラス(私は、関連する質問を見ましたが、私は同じ理由でエラーになった場合、私はわかりませんでした)それが以前に働いていたという事実、そして突然働きを止めました。 –

答えて

2

あなたは既にdatetimeからdatetimeをインポートしているので、あなたのコード内でdatetime.datetimeを呼び出す必要はありません。

インポートステートメントをimport datetimeに変更するか、コードをdatetime(...)に変更してください。

ちなみに、datetimeの代わりにarrowを調べるとよいでしょう。

for day in range(25, 32): 
    if datetime(current_year, 3, day).weekday() == 6: 
     BST_start = datetime(current_year, 3, day, 1) 
    if datetime(current_year, 10, day).weekday() == 6: 
     BST_end = datetime(current_year, 10, day, 1) 
+1

私にそれを打つ。 :-) –

+0

Hehe。はい、このサイトは実際には非常に高速ですが、信じられないほどです。私はここでかなり新しいですが、私はそれを楽しんでいます。 待って、これはメタや何かに入るはずですか? :-) –

+1

これは治療を受けました、ありがとう!あなたはとても速く、私はもう8分は答えを受け入れることができません:) –

関連する問題