0

変数 start_time と end_time と、confirmed_time という別の値があります。Confirmed_time が start_time と end_time の間にあることを確認する必要があります。どのように私は見つけるでしょう。時刻は次の形式です。

starting_time = "Jan 25 10:00:00"
ending_time   = "Jan 26 20:06:59"

また、confirmed_time も同じ形式です。

どんな助けでも大歓迎です

4

6 に答える 6

6

datetime.strptimeを使用して、日付と時刻をdatetimeオブジェクトとして解析し、それらを比較できます。これらの各時間の形式が同じままであることが重要であることに注意してください

>>> starting_time = "Jan 25 10:00:00"
>>> ending_time   = "Jan 26 20:06:59"
>>> confirmed_time = "Jan 25 11:11:11"
>>> starting_time_dt = datetime.strptime(starting_time,"%b %d %H:%M:%S")
>>> ending_time_dt   = datetime.strptime(ending_time,"%b %d %H:%M:%S")
>>> confirmed_time_dt   = datetime.strptime(confirmed_time,"%b %d %H:%M:%S")
>>> if starting_time_dt <= confirmed_time_dt <= ending_time_dt:
    print "Within ...."


Within ....
>>> confirmed_time = "Jan 24 11:11:11"
>>> confirmed_time_dt   = datetime.strptime(confirmed_time,"%b %d %H:%M:%S")
>>> if starting_time_dt <= confirmed_time_dt <= ending_time_dt:
    print "Within ...."


>>> 
于 2013-01-28T08:14:37.953 に答える
1

dateutil を使用して値を解析し、datetime に変換します。次に、confirmed_time が必要な間隔内にあることを確認します。

于 2013-01-28T08:07:20.197 に答える
0

これは機能します:

import datetime as dt

starting_time = "Jan 25 10:00:00"
ending_time   = "Jan 26 20:06:59"
confirmed_time = "Jan 26 08:10:01"
fmt="%b %d %H:%M:%S"

print (dt.datetime.strptime(starting_time,fmt) < 
       dt.datetime.strptime(confirmed_time,fmt) < 
       dt.datetime.strptime(ending_time,fmt))

年が指定されていない場合、datetimeデフォルトは1900になります。ただし、年がないことはややあいまいです。仮に:

starting_time = "Dec 26 10:00:00"
ending_time   = "Jan 26 20:06:59"     # the following year or the same year? 
confirmed_time = "Jan 02 08:10:01"

編集

strptimeで使用される入力形式を変更することで、(コメントのように)年を処理できます。

import datetime as dt

starting_time = "Dec 25 10:00:00 UTC 2012"
ending_time   = "Jan 26 20:06:59 UTC 2013"
confirmed_time = "Jan 02 08:10:01 UTC 2013"
fmt="%b %d %H:%M:%S UTC %Y"

print (dt.datetime.strptime(starting_time,fmt) < 
       dt.datetime.strptime(confirmed_time,fmt) < 
       dt.datetime.strptime(ending_time,fmt))
于 2013-01-28T08:21:21.543 に答える
0
def isDateBetween(starting_time, ending_time, confirmed_time):
        pattern = '%b %d %H:%M:%S'

        startDate = datetime.datetime.strptime(starting_time, pattern)
        endDate = datetime.datetime.strptime(ending_time, pattern)
        confirmedDate = datetime.datetime.strptime(confirmed_time, pattern)

        return startDate <= confirmedDate <= endDate

print isDateBetween("Jan 25 10:00:00", "Jan 26 20:06:59", "Jan 27 12:20:00")
于 2013-01-28T08:19:43.783 に答える
0

datetime モジュールが役立ちます

In [41]: starting_time = "Jan 25 10:00:00"

In [42]: datetime.datetime.strptime(starting_time, "%b %d %H:%M:%S")
Out[42]: datetime.datetime(1900, 1, 25, 10, 0)

In [43]: s = datetime.datetime.strptime(starting_time, "%b %d %H:%M:%S")

In [44]: ending_time   = "Jan 26 20:06:59"

In [45]: e = datetime.datetime.strptime(ending_time, "%b %d %H:%M:%S")

In [46]: e
Out[46]: datetime.datetime(1900, 1, 26, 20, 6, 59)

In [47]: confirm_time   = "Jan 26 12:00:00"

In [48]: c = datetime.datetime.strptime(confirm_time, "%b %d %H:%M:%S")

In [49]: if s < c < e:
   ....:     print True
   ....:
True

文字列を日時オブジェクトに変換する際に使用できるこれらの形式を確認してください

于 2013-01-28T08:15:16.557 に答える
0

dateutlil モジュールをインストールして使用することをお勧めします。これにより、日付の解析がはるかに簡単になります。

from dateutil import parser

s_time = "Jan 25 10:00:00"
e_time = "Jan 26 20:06:59"
f_time = "Jan 25 12:10:00"

def example(conf, start, end):
    p = parser.parse
    return p(start) < p(conf) < p(end)

print example(f_time, s_time, e_time)
#output: True

parser.parseあいまいなフォーマットのほとんどを処理できます。

In[21]: parser.parse("Sat Jan 26 00:31:17 UTC 2013")
Out[21]: datetime.datetime(2013, 1, 26, 0, 31, 17, tzinfo=tzutc())
于 2013-01-28T08:18:12.640 に答える