2017-11-15 7 views
0

私はコンバータの秒に時代」を書いていますが、私は様々なエラーを得続けます。違いは、そのうちの一つ、ユーザの入力

# 

!/usr/bin/env python3 
# -*- coding: utf-8 -*- 
#This program converts your age to seconds 
from datetime import datetime 

print ('Welcome to a simple age to seconds converter. ') 

def get_date(): 
    print ('Please enter the year of your birth in the format YYYY, MM, DD:') 
    date_of_birth = str(input()) 
    converted_date = datetime.strptime(date_of_birth, '%Y, %m, %d') 
    date_now = datetime.strftime("%Y-%m-%d") 
    total_seconds = ((date_now - converted_date).days)*86400 
    return ('You have lived for:', total_seconds, 'seconds.') 

print (get_date()) 
if __name__ == "__main__": 
    main() 

私は、これはプログラムの最も正しいバージョンだと思うが、私は、エラーTypeError例外を取得しておく:記述子「strftimeのは、」「datetime.date」オブジェクトが必要ですが、「STR」を受けました。

誰もが、私はそれを修正することができます方法を知っていますか?また、現在の日付を入力する正確な瞬間まで秒数をカウントする方法もありますか? ありがとうございます

+0

なぜあなたは 'main'を呼び出そうとしていますか?あなたはそのスクリプトに 'main'を定義していません。ところで、1日に86400秒があります。 –

答えて

0

メソッドstrftime()をクラスから直接呼び出します。代わりにdatetimeインスタンスで呼び出す必要があります。

#!/usr/bin/env python3 
# -*- coding: utf-8 -*- 
#This program converts your age to seconds 
from datetime import datetime 

print ('Welcome to a simple age to seconds converter. ') 

def get_date(): 
    print ('Please enter the year of your birth in the format YYYY, MM, DD:') 
    date_of_birth = str(input()) 
    converted_date = datetime.strptime(date_of_birth, '%Y, %m, %d') 
    date_now = datetime.now() 
    total_seconds = ((date_now - converted_date).days)*8640000 
    return ('You have lived for:', total_seconds, 'seconds.') 

print (get_date()) 
if __name__ == "__main__": 
    main() 

編集:その後、日時インスタンスは文字列から減算されるので、私はちょうど、あなたのコードの次の行は、実際にエラーが発生する可能性があることに気づいた私は、以下のコードで().nowを追加しました。 .strftime()呼び出しを完全に削除したいかもしれません。

+0

'str'オブジェクトから' datetime'を引いています。 – schwobaseggl

+0

ええ、ちょうどそれを理解しました、私は答えを編集しました。 – Plenka

1

date_nowは、datetime.now()である必要があります。 strftime("%Y-%m-%d")は、既存のdatetimeインスタンスで呼び出され、文字列を返します。

date_of_birth = input() 
converted_date = datetime.strptime(date_of_birth, '%Y, %m, %d') 
date_now = datetime.now() 
total_seconds = (date_now - converted_date).days * 24 * 60 * 60 
# day: 24 h * 60 min * 60 sec = 86400 != 8640000 
print('You have lived for:', total_seconds, 'seconds.') 
+0

OPがしていたし、害を引き起こさなかったので:)更新されました。 – schwobaseggl

関連する問題