これが密であれば、事前にごめんなさい。私は最後にツイートを投稿してから、その日を探しています。私が取り組んでいる問題は、今日と昨日などの日付が異なる場合ですが、十分な時間が過ぎて完全な「日」にならない場合です。timedelta.daysが1未満のときにPythonで "日数"を決める
# "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日だったと言いたい。今日、私がツイートした場合、結果は0になります。
違いを得るためにtimedeltaを使用するよりも良い方法はありますか?「+1」を追加することは助けになりません。マッティ・ライラ
で答えを提供
ソリューションは、それらが(タイムスタンプなし)粗い日付オブジェクトに変換されますので、日付時刻に().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
:次のコードでは "0" をoutputing後
一部? –
あなたが正しいローカルタイムゾーン/タイムゾーン設定を持っていると仮定して、タイムゾーンを手動で管理しないようにするには、 'rightNow = datetime.utcnow()'を試してください。 – SingleNegationElimination
.secondsは、ツイート間の_days_を知りたいので役に立ちません。午後11時にツイートを掲示し、午前1時(2時間後)にスクリプトを実行すると、「1」が返されます。しかし、私が午前1時にツイートを投稿し、午前3時にスクリプトを実行すると、 "0"が返されます。 .secondsは.daysと同じ問題を抱えています。 utcnow()は問題ありませんが、私のツイートの時刻を自分の現地時間に変換するのか、それとも私の現地時間をUTCに変換するのかは、ちょうど6つで、もう一方は6つです。 – psxndc