python - 有没有最好的方法可以在 Python 中将给定的天数更改为年月周天?

标签 python django datetime

我给出了将天数转换为年、月、周和天的天数,但我将默认天数设置为 365 天,将月天数设置为 30 天。我如何才能有效地做到这一点?

def get_year_month_week_day(days):
    year = days / 365
    days = days % 365
    month = days / 30
    days = days % 30
    week = days / 7
    day = days % 7
    return year,month,week,day

def add_s(num):
    if num > 1:
        return 's '
    return ' '

@register.filter
def daysleft(fdate):
    cdate = datetime.datetime.now().date()
    days = (fdate.date() - cdate).days

    if days == 0:
        return "Today"
    elif days == 1:
        return "Tomorrow"
    elif days > 0:
        year, month, week, day = get_year_month_week_day(days)
        print year, month, week, day
        days_left = ""
        if year > 0:
            days_left += str(year) + " year" + add_s(year)
        if month > 0:
            days_left += str(month) + " month" + add_s(month)
        if week > 0:
            days_left += str(week) + " week" + add_s(week)
        if day > 0:
            days_left += str(day) + " day" + add_s(day)
        return days_left + " left"
    else:
        return "No time left"

最佳答案

如果使用名为python-dateutil 的第三方库,就容易多了:

>>> import datetime
>>> from dateutil.relativedelta import relativedelta

>>> now = datetime.datetime.now()
>>> td = datetime.timedelta(days=500)
>>> five_hundred_days_ago = now - td

>>> print relativedelta(now, five_hundred_days_ago)
relativedelta(years=+1, months=+4, days=+13)

关于python - 有没有最好的方法可以在 Python 中将给定的天数更改为年月周天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31739208/

相关文章:

Python retrofit - 防止危险的脚本被导入?

python - 用于稀疏矩阵计算的 Scipy 或 Pandas?

带有 glpk 求解器的 Python/Pyomo - 错误

django.db.utils.OperationalError : (1054,“未知列

php 32 位日期解析 1901 年 12 月 13 日之前的日期

javascript - Javascript 中 iso 格式的日期时间

python - 从 Raspberry PI 3 到 Arduino UNO 的串行通信丢失字节

django - Heroku:为 Django 应用运行 npm install 和 gulp build

python - 根据 Django 中先前的模型选择限制表单字段选择

sql-server - 如何将 GetDate() 转换为 "YYYY-MM-DD-HHMM"格式?