web-dev-qa-db-ja.com

Python 3.2入力日付関数

ユーザーが入力した日付を取得し、それをshelve関数と一緒に保存し、呼び出されたときに30日後に日付を出力する関数を作成したいと思います。

私は次のような単純なものから始めようとしています:

import datetime

def getdate():
    date1 = input(datetime.date)
    return date1

getdate()

print(date1)

これは明らかに機能しません。

上記の質問に対する回答を使用して、プログラムのそのセクションを機能させました。ありがとう!次のパートでは、次のようにします。

私はあなたがそれを取得するように私に指示した方法で日付を取り、30日を追加する簡単なプログラムを書こうとしています。

import datetime
from datetime import timedelta

d = datetime.date(2013, 1, 1)
print(d)
year, month, day = map(int, d.split('-'))
d = datetime.date(year, month, day)
d = dplanted.strftime('%m/%d/%Y')
d = datetime.date(d)+timedelta(days=30)
print(d)

これにより、エラーが発生します:year、month、day = map(int、d.split( '-'))AttributeError: 'datetime.date'オブジェクトに属性 'split'がありません

最終的に私が欲しいのは、2013年1月1日+ 30日で、2013年1月30日を印刷することです。

前もって感謝します!

7
Gregory6106

input()メソッドはのみ端末からテキストを取得できます。したがって、そのテキストを解析して日付に変換する方法を理解する必要があります。

あなたは2つの異なる方法でそれについて行くことができます:

  • 日付の3つの部分を個別に入力するようにユーザーに依頼するため、input()を3回呼び出し、結果を整数に変換して、日付を作成します。

    year = int(input('Enter a year'))
    month = int(input('Enter a month'))
    day = int(input('Enter a day'))
    date1 = datetime.date(year, month, day)
    
  • ユーザーに特定の形式で日付を入力するように依頼し、その形式を年、月、日の3つの数値に変換します。

    date_entry = input('Enter a date in YYYY-MM-DD format')
    year, month, day = map(int, date_entry.split('-'))
    date1 = datetime.date(year, month, day)
    

これらのアプローチは両方とも例です。たとえば、エラー処理は含まれていません。Python例外処理を読んで、自分でそれを理解する必要があります。:-)

17
Martijn Pieters

ありがとう。私はdatetime.datetime(xxx)に情報を追加する方法を理解しようとしてきましたが、これはそれをうまく説明しています。次のとおりです

datetime.datetime(year,month, day, hour, minute, second)パラメータはすべて整数です。できます!

0
Arnold