26

Python でこの問題を解決するにはどうすればよいですか。これが私のコードです:

    import time
    import datetime
    from time import mktime
    from datetime import datetime

    date = '20120814174530'
    date_to_strp = time.strptime(date, '%Y%m%d%H%M%S') #convert the value of date into strptime
    date_final = datetime.fromtimestamp(mktime(date_to_strp))
    #convert date_to_strp so so i can use it to subtract a value from a timedelta later

    date_substracted = date_final - datetime.timedelta(hours = 36)

これにはエラーがあります:

タイプオブジェクト「datetime.datetime」には属性「timedelta」がありません

にもかかわらずimport datetime、 によってオーバーライドされたと思いますが、 とfrom datetime import datetimeの位置を変更するimport datetimefrom datetime import datetime、エラーは次のようになります。

「モジュール」オブジェクトには属性「fromtimestamp」がありません

このコードを使用して、この両方のエラーを修正できます。

    import time
    from time import mktime
    from datetime import datetime

    date = '20120814174530'
    date_to_strp = time.strptime(date, '%Y%m%d%H%M%S')
    date_final = datetime.fromtimestamp(mktime(date_to_strp))

    import datetime

    date_substracted = date_final - datetime.timedelta(hours = 36)

さて、このコードでは正しく機能していますが、私が望むのは、すべてのインポート部分が良い習慣として一番上にあることです。他の方法でコーディングします。

4

3 に答える 3

38

を使用するdatetime.datetime.fromtimestampか、インポートをに変更してfrom datetime import datetime as dtを使用しますdt.fromtimestamp

于 2012-08-16T08:54:40.010 に答える
9

このようにtimedeltaを個別にインポートする必要があると思います。

from datetime import datetime as dt, timedelta

その後、あなたは呼び出すことができます

dt.fromtimestamp(mktime(date_to_strp))

timedelta(hours = 36)
于 2015-08-07T23:12:09.000 に答える
8

次のような直接インポートは使用しないでください。

import decimal
import datetime

それは以下の原因となります:

datetime.datetime.today()
decimal.Decimal()

このことを考慮:

from datetime import datetime
from decimal import Decimal
print datetime.now()
print Decimal("1")
于 2012-09-17T19:12:07.683 に答える