Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中将日期值映射到时间戳范围?_Python_Python 3.x_Date_Date Range - Fatal编程技术网

如何在Python中将日期值映射到时间戳范围?

如何在Python中将日期值映射到时间戳范围?,python,python-3.x,date,date-range,Python,Python 3.x,Date,Date Range,我是以日期范围作为有效载荷的一部分的。使用指示范围开始和结束的2个datetime参数指定范围: |名称|类型|描述|格式|必填项| |-------+--------+------------------------------------------------------------+---------------------+-------------| |因为| string |您要搜索的日期范围的开始格式:“日期时间”|可选| | | |

我是以日期范围作为有效载荷的一部分的。使用指示范围开始和结束的2个datetime参数指定范围:

|名称|类型|描述|格式|必填项|
|-------+--------+------------------------------------------------------------+---------------------+-------------|
|因为| string |您要搜索的日期范围的开始格式:“日期时间”|可选|
|       |        |                                                            |                     |             |
|直到| string |要搜索的日期范围的末尾。|格式:“日期时间”|可选|
调用此API时,我希望使用一周的固定子间隔:
至周五晚上8点,以及
至周一上午8点。我目前正在使用以下特定日期范围对其进行测试:

payload = {
   'since': '2020-03-27T20:00-05',
   'until': '2019-03-30T08:00-05'
}

在我的脚本中,我希望给出一个日期作为输入,并将该日期映射到一个有效负载,该有效负载为该间隔的最新时间实例指定
。我不知道该怎么做,你能帮我吗?

如果我正确理解了你的问题,你希望能够随机选择任何日期,并将其转换为周五晚上8点到周一上午8点的日期范围吗

您可以这样做:

import datetime

def make_payload(date_str):
    today = datetime.date.fromisoformat(date_str)
    monday = datetime.datetime.fromisoformat(
                str(datetime.date.fromordinal(
                    (today.toordinal() - today.toordinal() % 7) + 1)) + " 08:00")
    friday = datetime.datetime.fromisoformat(
                str(datetime.date.fromordinal(
                    (today.toordinal() - today.toordinal() % 7) - 2)) + " 20:00")
    payload = {'since': friday.isoformat(),
               'until': monday.isoformat()}
    return payload

payload = make_payload('2020-04-07')
print(payload['since'], payload['until'])
这将产生:

2020-04-03T20:00:00 2020-04-06T08:00:00


它以ISO格式的日期作为输入,并将其调整为最后一个星期五-星期一日历周期。你可以调整周一和周五来给不同的日子,如果这不是你想要的,但这给出了基本的想法。

如果我正确理解了你的问题,你希望能够选择任意的日期,并将其转换为周五晚上8点到周一早上8点的日期范围吗

您可以这样做:

import datetime

def make_payload(date_str):
    today = datetime.date.fromisoformat(date_str)
    monday = datetime.datetime.fromisoformat(
                str(datetime.date.fromordinal(
                    (today.toordinal() - today.toordinal() % 7) + 1)) + " 08:00")
    friday = datetime.datetime.fromisoformat(
                str(datetime.date.fromordinal(
                    (today.toordinal() - today.toordinal() % 7) - 2)) + " 20:00")
    payload = {'since': friday.isoformat(),
               'until': monday.isoformat()}
    return payload

payload = make_payload('2020-04-07')
print(payload['since'], payload['until'])
这将产生:

2020-04-03T20:00:00 2020-04-06T08:00:00


它以ISO格式的日期作为输入,并将其调整为最后一个星期五-星期一日历周期。如果你不太喜欢星期一和星期五,你可以调整星期一和星期五,给不同的日子,但这给出了基本的想法。

你想使用哪一个星期五和哪一个星期一?如果您在星期六调用此API,您希望发生什么?文档中不会找到此类信息吗?正如@AlecBrooks所提示的,您必须指定您想要获取的特定日期,使用此设置无法绕过。这就是说,它可以(1)为许多这样的日期范围生成请求,(2)取任意日期并导出相关的日期范围。@AlecBrooks该代码将专门在每周一运行,因此它只获取周末发生的事件。@Z4 tier好的,我想无法绕过特定日期。我将尝试使用你指出的可能性。谢谢。你想用哪个星期五和哪个星期一?如果您在星期六调用此API,您希望发生什么?文档中不会找到此类信息吗?正如@AlecBrooks所提示的,您必须指定您想要获取的特定日期,使用此设置无法绕过。这就是说,它可以(1)为许多这样的日期范围生成请求,(2)取任意日期并导出相关的日期范围。@AlecBrooks该代码将专门在每周一运行,因此它只获取周末发生的事件。@Z4 tier好的,我想无法绕过特定日期。我将尝试使用你指出的可能性。谢谢。注意:这可能不是计算此值的绝对最佳方法,使用
timedelta
,以避免来回转换为
str
,可能更为惯用。这就是说,这是相当合理的,它是有效的,而且它没有做任何太非正统的事情。这非常有效。你完全明白我在找什么。很抱歉,如果我最初的帖子模糊不清,但非常感谢。这对我有用。:)注意:这可能不是计算此值的绝对最佳方法,使用
timedelta
可能更为惯用,以避免来回转换为
str
的额外位。这就是说,这是相当合理的,它是有效的,而且它没有做任何太非正统的事情。这非常有效。你完全明白我在找什么。很抱歉,如果我最初的帖子模糊不清,但非常感谢。这对我有用。:)