2017-11-02 12 views
1

「期限切れ日」が現在の日付から3日以内に文字列形式である必要があるコード要件があります。以下は私のコードです日時の日数を追加し、Pythonで文字列形式に変換する

これは完全に動作し、出力は "5/11/2017"と似ています。ただし、現在の日付が28日または29日のときにこのコードが壊れます。 Pythonは何とか月の1日にスキップするのではなく、33日に日付を追加しました。私は研究を行い、Python Console(以下)で動作するが、Selenium Web DriverとPycharmで動作しないソリューションを見つけました。 pycharmの下で同じコードを実行すると

>>> from datetime import datetime, timedelta 
>>> m = '29/10/2017' 
>>> date = datetime.strptime(m, "%d/%m/%Y") 
>>> modified_date = date + timedelta(days=3) 
>>> datetime.strftime(modified_date, "%d/%m/%Y") 
'01/11/2017' 

、次のエラーが発生します。

Error 
Traceback (most recent call last): 
    date = datetime.strptime(m, "%d/%m/%Y") 
Exception: module 'datetime' has no attribute 'strptime' 

すべてのヘルプは高く評価されます。誰かが興味があれば、私はpython 3.6.1を使用しています。おそらく非常に小さいもの(2つの可能な解決策がありますが、どれも機能しません)がありますが、3日間このコードに固執し、正しい解決策を見つけることができません。

+0

メソッド名に違いがあります。strptimeとstrftime –

答えて

0

、私は「日時インポート日時からで、timedelta」と「輸入日時」の両方を追加されたいくつかの問題 1)を扱った考え出しました一緒に。そのうちの1つを削除すると、私の問題のほとんどが解決されました。 2)「日時インポート日時から」使用して現在の日付を取得するには、私は次のようでした:

from datetime import datetime 
now = "{:%Y_%m_%d}".format(datetime.now()) 
print(now) 

私が得る出力は、

'2017_11_03' #today's date 

である私は一度だけ「日時」を指定する必要がつまり、 "datetime.now()"というクラスは "datetime"モジュールからクラス "datetime"をインポートしていました。

1

はあなたのコードに次のように持っていないことを確認してください:

import datetime 

あなたがそれを行う場合は、それがクラッシュします。以下のような:前のポスターの助けを借りて

from datetime import datetime, timedelta 
import datetime 
m = '29/10/2017' 
date = datetime.strptime(m, "%d/%m/%Y")` 


Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: module 'datetime' has no attribute 'strptime' 
+0

返信いただきありがとうございます。私は私のコードの両方の行を持っている可能性があります。ダブルチェックが必要です。 – Bubbles

関連する問題