查找给定时间戳是属于集合A还是集合B.

时间:2014-12-11 12:31:37

标签: python timestamp

我想将时间戳“分类”为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)

2 个答案:

答案 0 :(得分:0)

Python有很好的丰富比较。具体来说,你可以写:

if low < myval < high:
    print("{} is between {} and {}".format(myval, low, high))

它完全按照您的预期运作。

如果您运行dir(new_time),您会找到一系列有趣的内容,例如weekdayhour。所以你可以做类似

的事情
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)