python中的包含日期范围

python中的包含日期范围,python,python-2.7,datetime,time,Python,Python 2.7,Datetime,Time,我没有正确地表达这个问题,因此,没有一个答案是正确的 我想知道的是,如果只给出日期,而不是同时给出日期和时间,那么让time以纪元毫秒为单位返回一天结束时间的最佳方法是什么 以下是我目前的做法: def get_epoch_endofday(day): return time.mktime(time.strptime('005923'+day,"%S%M%H%d%m%y"))*1000 该函数以ddmmyy的形式获取日期,然后在23:59:00吐出当天的历元毫秒数 我想知道,有没有更优

我没有正确地表达这个问题,因此,没有一个答案是正确的

我想知道的是,如果只给出日期,而不是同时给出日期和时间,那么让
time
以纪元毫秒为单位返回一天结束时间的最佳方法是什么

以下是我目前的做法:

def get_epoch_endofday(day):
    return time.mktime(time.strptime('005923'+day,"%S%M%H%d%m%y"))*1000
该函数以ddmmyy的形式获取日期,然后在23:59:00吐出当天的历元毫秒数


我想知道,有没有更优雅的方法呢?

一开始不太清楚,但你想为给定的一天创建一个时间间隔(比如说
2016-02-14
),其中包含当天的第一个和最后一个瞬间。这意味着:

第一个瞬间:
2016-02-14 00:00:00.000

最后一刻:
2016-02-14 23:59:59.999

下面的函数以元组的形式返回该间隔。它的工作原理如下:

  • 通过在同一天创建一个新的日期实例(小时、分钟和毫秒都设置为
    0
    ),创建间隔的
    start
  • 创建一个跨越
    23
    小时、
    59
    分钟、
    59
    秒和
    999999
    微秒的时间间隔
  • 将此时间间隔添加到一天的开始
代码:

有关更多选项,请参阅


如果间隔可以是独占的,代码会变得更简单,请参阅的摘要。

起初不太清楚,但您希望为给定的一天创建一个间隔(例如
2016-02-14
),其中包含该天的第一个和最后一个瞬间。这意味着:

第一个瞬间:
2016-02-14 00:00:00.000

最后一刻:
2016-02-14 23:59:59.999

下面的函数以元组的形式返回该间隔。它的工作原理如下:

  • 通过在同一天创建一个新的日期实例(小时、分钟和毫秒都设置为
    0
    ),创建间隔的
    start
  • 创建一个跨越
    23
    小时、
    59
    分钟、
    59
    秒和
    999999
    微秒的时间间隔
  • 将此时间间隔添加到一天的开始
代码:

有关更多选项,请参阅

如果间隔可以是独占的,则代码会变得更简单,请参阅。

生成器的摘要 以下是如何创建生成包含范围的函数:

def inc_range(stop, start=0, step=1):
    numerator = start

    while numerator<=stop:
        yield numerator
        numerator += step


a = [val for val in inc_range(10)]
print(a)
现在,这种方法可以适应任何你想要的;日期或其他

日期范围生成器 这里介绍了根据您的需要定制的方法:

from datetime import date, timedelta 


def date_range(stop, start, step=1):
    delta_date = stop - start
    numerator = 0

    while numerator <= delta_date.days:
        yield str(start + timedelta(numerator))
        numerator += step


date_start = date(2014, 3, 15)
date_end = date(2014, 3, 21)

a = [val for val in date_range(date_end, date_start)]
print(a)
请注意,如果在生成器中生成时未包含
str()
,则响应将是
datetime.date()
的对象

希望这能回答您的问题。

以下是如何创建生成包含范围的函数:

def inc_range(stop, start=0, step=1):
    numerator = start

    while numerator<=stop:
        yield numerator
        numerator += step


a = [val for val in inc_range(10)]
print(a)
现在,这种方法可以适应任何你想要的;日期或其他

日期范围生成器 这里介绍了根据您的需要定制的方法:

from datetime import date, timedelta 


def date_range(stop, start, step=1):
    delta_date = stop - start
    numerator = 0

    while numerator <= delta_date.days:
        yield str(start + timedelta(numerator))
        numerator += step


date_start = date(2014, 3, 15)
date_end = date(2014, 3, 21)

a = [val for val in date_range(date_end, date_start)]
print(a)
请注意,如果在生成器中生成时未包含
str()
,则响应将是
datetime.date()
的对象


希望这能回答您的问题。

我不确定我是否理解您的要求。您能否添加一个您正在寻找的值类型的示例?第二个日期是什么,为什么
00:00
是独占的?如果您只使用日期,为什么不使用
datetime.date()
对象?更准确地说,
day
应该有什么值,以及您希望从
get_epoch
@MartijnPieters获得什么样的返回值?请参阅我的编辑。数据集以秒为单位记录日期。如果下面给出的任何答案解决了您的问题,请将其标记为秒,以便关闭线程并将其从板上移除。否则,请详细说明。谢谢。我不太明白你想要什么。您能否添加一个您正在寻找的值类型的示例?第二个日期是什么,为什么
00:00
是独占的?如果您只使用日期,为什么不使用
datetime.date()
对象?更准确地说,
day
应该有什么值,以及您希望从
get_epoch
@MartijnPieters获得什么样的返回值?请参阅我的编辑。数据集以秒为单位记录日期。如果下面给出的任何答案解决了您的问题,请将其标记为秒,以便关闭线程并将其从板上移除。否则,请详细说明。谢谢
['2014-03-15', '2014-03-16', '2014-03-17', '2014-03-18', '2014-03-19', '2014-03-20', '2014-03-21']