Округление даты до ближайшего полугодия - PullRequest
0 голосов
/ 10 июля 2019

Я хочу иметь возможность округлить текущую дату до ближайшего (позже / равного) полугодия в формате DD MMM YYYY в python.

Пример 1: Если сегодня 10 Jul 2019, я хочу, чтобы вывод моего кода отображал 31 Dec 2019.

Пример 2: Если сегодня 15 Jan 2019, я хочу, чтобы результат был 30 Jun 2019.

Кроме того, я хочу, чтобы месяцы были июнь / декабрь (МММ), а не 06 или 12.

Iимпортировали пакет datetime, но не знаете, что делать дальше.Я пытаюсь использовать функцию округления, но также не уверен.

У меня есть код для моей электронной почты: Пожалуйста, ознакомьтесь с требованиями для полугодия, заканчивающегося ДД МММ ГГГГ.я хочу, чтобы DD MMM YYYY был заполнен автоматически

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Вы можете сделать это, проверив whthr date.today().month//7 >0. это даст, в какую половину текущего дня попадает текущий день, и соответственно вернет последний день полугодия.

from datetime import datetime,date
def get_nearest_halfyear(date_var):
    return date(date_var.year, 12, 31).strftime("%d %b %Y") if date_var.month//7>0 else date(date_var.year, 6, 30).strftime("%d %b %Y")
print('Please refer to the requirements for the half year ending {}.'.format(get_nearest_halfyear(date.today())))

вывод: См. Требования на полугодие, заканчивающееся 31 декабря 2019 года.

0 голосов
/ 10 июля 2019

С помощью этого ответа Python округляет целое число до следующей сотни , вы можете использовать что-то вроде этого:

from datetime import datetime
from calendar import monthrange

def roundup(x, b=6):
    return x if x % b == 0 else x + b - x % b

def get_nearest_halfyear(date_str):
    d = datetime.strptime(date_str, '%d %b %Y')
    m = roundup(d.month)
    return datetime(year=d.year, month=m, day=monthrange(d.year, m)[-1] ).strftime('%d %b %Y')

for s in ['10 Jul 2019', '15 Jan 2019']:
    print('Please refer to the requirements for the half year ending {}.'.format(get_nearest_halfyear(s)))

Печать:

Please refer to the requirements for the half year ending 31 Dec 2019.
Please refer to the requirements for the half year ending 30 Jun 2019.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...