これが密集している場合は、事前に申し訳ありません。最後にツイートを投稿してからの日数を見つけようとしています。私が直面している問題は、日付が異なる場合です。たとえば、今日と昨日ですが、完全な「日」になるのに十分な時間が経過していません。
# "created_at" is part of the Twitter API, returned as UTC time. The
# timedelta here is to account for the fact I am on the west coast, USA
lastTweetAt = result.created_at + timedelta(hours=-8)
# get local time
rightNow = datetime.now()
# subtract the two datetimes (which gives me a timedelta)
dt = rightNow - lastTweetAt
# print the number of days difference
print dt.days
問題は、たとえば昨日の午後 5 時にツイートを投稿し、今日の午前 8 時にスクリプトを実行すると、わずか 15 時間、つまり 0 日しか経過していないことです。しかし、明らかに、昨日のツイートから 1 日経っていると言いたいです。そして、「+1」を追加するのは役に立ちません。なぜなら、今日ツイートした場合、結果を0にしたいからです.
違いを得るために timedelta を使用するよりも良いアプローチはありますか?
Matti Lyra が提供するソリューション
答えは、日時で .date() を呼び出して、より粗い日付オブジェクト (タイムスタンプなし) に変換することです。正しいコードは次のようになります。
# "created_at" is part of the Twitter API, returned as UTC time.
# the -8 timedelta is to account for me being on the west coast, USA
lastTweetAt = result.created_at + timedelta(hours=-8)
# get UTC time for right now
rightNow = datetime.now()
# truncate the datetimes to date objects (which have dates, but no timestamp)
# and subtract them (which gives me a timedelta)
dt = rightNow.date() - lastTweetAt.date()
# print the number of days difference
print dt.days