我想将时间戳“分类”为A或B,其中A和B是时间帧组。更具体地说,我有以下格式的几个日期'2014-11-23T12:00:00.000 + 04:00'。我想做的是找出它们中的每一个是否属于[在星期一的11到16之间或星期二的11和16之间]或者设置[星期日的星期六11到16之间]或者这些组中的非。有任何想法如何在Python中实现它?
修改
以下代码适用于提供的日期字符串,但是,它不符合我的日期字符串,因为我使用稍微不同的格式(即'2014-11-23T12:00:00.000 + 04:00')< / p>
from datetime import datetime
new_time = datetime.strptime('2012-03-01T10:00:00Z','%Y-%m-%dT%H:%M:%SZ')
print(new_time)
答案 0 :(得分:0)
Python有很好的丰富比较。具体来说,你可以写:
if low < myval < high:
print("{} is between {} and {}".format(myval, low, high))
它完全按照您的预期运作。
如果您运行dir(new_time)
,您会找到一系列有趣的内容,例如weekday
和hour
。所以你可以做类似
THURSDAY = 3
if new_time.weekday == THURSDAY and low_time < new_time.hour < high_time:
print("{} is on Thursday between {} and {}".format(new_time,
low_time,
high_time))
您还可能希望确保.minute
/ .second
/ .microsecond
不是&t; t&gt; 0.当然,如果它是您正在寻找的星期一或星期五特定,您可以轻松地创建您的时间:
monday_at_1100 = datetime(2014, 12, 8, 11)
monday_at_1600 = datetime(2014, 12, 8, 16)
if monday_at_1100 < new_time < monday_at_1600:
do_something()
答案 1 :(得分:0)
两种可扩展的一般方法:
降低数据的精确度。
将timetstamp 12:13:14映射到12:*****,然后你可以在原生Python集中拥有一套全面的时间戳:
"12:*****" in set(["12:*****", "17:*****"])
True
使用二叉树或堆或跳过列表或类似的分层数据结构
(12:00, 17:59)
/ \
(12:00, 12:59) (17:00, 17:59)