Python: вернуть дату следующего вхождения третьего четверга месяца - PullRequest
0 голосов
/ 20 января 2019

Я немного новичок в Python, и я действительно изо всех сил пытался решить то, что кажется простой проблемой, но я замечаю весь этот код накапливающийся, и я просто теряюсь в соусе.

Мне просто нужна дата следующего вхождения третьего четверга месяца, будь то текущий месяц или следующий месяц.

Это отличается от возможной проблемы дублирования, потому что я не тестирую, чтобы определить, была ли данная дата третьим четвергом, я просто хочу выложить следующее вхождение третьего четверга во время запуска сценария. .

Я с нетерпением жду возможности сделать что-то подобное (или решить гораздо более сложные проблемы!), Но мне действительно нужно, чтобы этот код работал для чего-то прямо сейчас. Буду очень признателен, если вы поможете мне решить мою головоломку и, возможно, оставите мне несколько полезных комментариев в процессе!

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Это то, что вы ищете?Он выводит 2019-2-21 на основе сегодняшнего дня 1/19, а третий четверг января был 1/17.В основном использовали эти другие ответы для подробного объяснения.Это был оригинальный дублирующий комментарий (который был удален) - Как рассчитать в следующую пятницу? .Просто спросите, нужно ли что-то объяснять.

import datetime

today = datetime.date.today()
next_thursday = today + datetime.timedelta(((3 - today.weekday()) % 7))
while True:
    if 15 <= next_thursday.day <= 21:
        next_third_thursday = next_thursday
        break
    else:
        next_date = next_thursday + datetime.timedelta(days=1)
        next_thursday = next_date + datetime.timedelta(((3 - next_date.weekday()) % 7))

print(next_third_thursday)
0 голосов
/ 20 января 2019

Использование

import pandas as pd
current_date = pd.Timestamp('Jan 20, 2019')
while True:
    if 15 <= current_date.day <= 21 and current_date.day_name() == 'Thursday':
        break
    current_date +=pd.DateOffset(1)

print(current_date)

#2019-02-21 00:00:00
...