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']