Как отобразить значение даты в диапазон отметок времени в Python? - PullRequest
0 голосов
/ 08 апреля 2020

Я использую API , который принимает диапазон дат как часть полезной нагрузки. Диапазон задается с использованием 2 параметров даты и времени, указывающих начало и конец диапазона:

| Name  | Type   | Description                                                | Format              | Required    |
|-------+--------+------------------------------------------------------------+---------------------+-------------|
| since | string | The start of the date range over which you want to search. | format: "date-time" | optional    |
|       |        |                                                            |                     |             |
| until | string | The end of the date range over which you want to search.   | format: "date-time" | optional    |

При вызове этого API я хочу использовать фиксированный подинтервал недели: since в качестве пятницы в 20:00 и until как понедельник в 8 утра. В настоящее время я тестирую его с указанным диапазоном дат c, например:

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

В моем сценарии я хочу указать одну дату в качестве входных данных и сопоставить эту дату с полезной нагрузкой, которая задает since и until для самого последнего временного экземпляра этого интервала. Я не уверен, как это сделать, вы можете помочь?

1 Ответ

2 голосов
/ 08 апреля 2020

Если я правильно понимаю ваш вопрос, вы хотите, чтобы вы могли взять любую случайную дату и перевести ее в диапазон дат Пт с 8 вечера до понедельника 8 утра?

1002 * Вы можете сделать это:
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 отформатировать в качестве входных данных и настроить его на последний календарный период пятница-понедельник. Вы можете настроить monday и friday, чтобы дать разные дни, если это не совсем то, что вы хотите, но это дает основную идею c.

...