私はいくつかの解決策を見つけましたが、そのほとんどは現在の日付について語ります。私が欲しいのは、現在の時刻が翌日23:00:00
と07:00:00
の範囲内にあるかどうかをチェックすることです。私は日付がこれにも関わっているので、困難に直面しています。したがって、現在の時刻が00:00:00
の場合、日付も変更され、同じ日の時刻と比較すると、23:00:00
は私に間違った結果をもたらします。これは今私が思いついたものです。これは3であることを関税をもたらすであろう時間が日付の範囲内にあるかどうかを確認する方法
cur_time = dt.strptime('2/9/16 00:00', "%m/%d/%y %H:%M")
prev_date = dt.strftime(cur_time.date() - timedelta(days=1), "%m/%d/%y")
same_date = dt.strftime(cur_time.date(), '%m/%d/%y')
dosta = dt.strptime(prev_date + "22:00", "%m/%d/%y%H:%M")
satta = dt.strptime(same_date + "07:00", "%m/%d/%y%H:%M")
if dosta < cur_time < satta:
tariff = 3
else:
tariff = 6
print(tariff)
を解決策を見つけることに私を助けてください私が変更された場合、この
cur_time = dt.strptime('2/9/16 23:00', "%m/%d/%y %H:%M")
ようcur_time
これは、これは私を与えるだろう。3.得られませんこれは現在の時刻を前日の00:00
と比較しているため、現在の日である07:00
と現在の日である23:00
は明らかに大きくなります。
編集1
Input: 2/9/16 06:00:00
Output: 3...because 06:00:00 is less than 07:00:00 that same day(2/9/2016) and more than 22:00:00 previous day(2/8/16)
Input: 2/9/16 23:00:00
Output: 3...because 23:00:00 is more than 22:00:00 that same day(2/9/2016)
Input: 2/10/16 00:30:00
Output: 3...because 00:30:00 is more than 22:00:00 that previous day(2/9/2016) and less than 07:00:00 same day(2/10/2016)
Input: 2/10/16 08:00:00
Output: 6...because 08:00:00 is more than 07:00:00 that same day(2/9/2016) and less than 22:00:00 on the same day(2/9/2016)
編集2 @a_guest
で指摘したようにそれはまだtimedelta
で作業されていません。 ここcur_time
が00:00:00 9/2/16
編集3
from datetime import datetime, time
import csv
import os
CSV_FILE_ASCO = os.path.join('..', 'res', 'ASCO_METER.csv')
with open(CSV_FILE_ASCO, 'r') as f:
reader = csv.DictReader(f)
data = list(reader)
for each in data:
# print()
cur_date = datetime.strptime(each['Start'], "%m/%d/%y %H:%M")
if time(7, 0) <= cur_date.time() < time(22, 0):
tarrif = 6
else:
tarrif = 3
print(cur_date, end=" ")
print(tarrif)
はそれをさらに向上させることができる可能性の高い答えは偽の場合、これは私に与えているコード
for each in zip(data1, data2):
# client.write_points(json_body_bill_data)
cur_time = dt.strptime(each[1]['Start'], "%m/%d/%y %H:%M")
# print(cur_time.date())
dosta = dt.strptime('2200', '%H%M').time()
# print(dosta)
lower = datetime.datetime.combine(cur_time.date(), dosta)
upper = lower + timedelta(hours=8.5)
print("lower", lower)
print("upper", upper)
print(cur_time, lower < cur_time < upper)
です。
私には、必要なすべてのコードセグメントがあるようですが、間違った方法でアセンブルしているようです。問題は、現在の時刻から1日を差し引くことです。必要があるかどうかは関係ありません。可能な修正を自分で思いつくことができますか?それは他の誰かが作った答えを得るよりもずっといいです... – nostradamus
'test = cur_time.date()
'cur_time'がcsvファイルから来ているので、私は' today() 'を使うことができません。そして、私はcsvファイルに記述されている日時と比較する必要があります。 –