- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
假设我在处理几个月的相对增量。
问题是当我这样做的时候:
x = relativedelta(months=12)
x.months
> 0
当我尝试做这样的事情时,这是一个问题:
y = relativedelta(months=12) - relativedelta(months=4)
y
> relativedelta(years=+1, months=-4)
y.months
> -4
我希望月份值为 8 (12 - 4)。任何人都知道如何最好地解决这个问题,以便我可以获得我正在寻找的输出?
最佳答案
relativedelta(months=12)
其实就是relativedelta(years=+1)
,它会自动把月转换成年。例如 months=13
将导致 relativedelta(years=+1, months=+1)
此外,只有当月份低于 -11 或高于 11 时,年才会改变。因此,如果操作后的月
数量仍在 -11 到 11 之间,则年份不会改变。
解决方案是您需要查看 rdelta.years
和 rdelta.months
值以获得您正在寻找的“净月数”。
def total_months(rdelta):
return (rdelta.years * 12) + rdelta.months
您可以将 relativedelta
子类化,使您的使用更加直观。
class reldelta(relativedelta):
@property
def total_months(self):
return (self.years * 12) + self.months
然后
>>> delta = reldelta(years=1) - relativedelta(months=4)
>>> delta
reldelta(years=+1, months=-4)
>>> delta.total_months
8
当然,如果您想将天数考虑在内,这可能会变得困惑,因为一个月中的天数会发生变化。这就是为什么 days
不像 months 那样有界
>>> relativedelta(days=9999)
relativedelta(days=+9999)
关于python - 数月工作时 python 中的 relativedelta,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40305345/
摘自dateutil.relativedelta.relativedelta的描述, year, month, day, hour, minute, second, microsecond: Abso
datetime.timedelta 和有什么区别? (来自 Python 的标准库)和 dateutil.relativedelta.relativedelta什么时候只工作几天? 据我了解,tim
我在使用 relativedelta 对象时遇到一些问题 - 无法确定“delta 是否为负数”。我正在尝试的是: from dateutil.relativedelta import relativ
我很难理解 dateutil.relativedelta 的行为。我知道如果我使用 relativedelta doc 中指定的否定参数,relativedelta 可能会返回过去的日期. 但是,当我
我正在尝试在两个相对增量之间进行“>”比较: if(relativedelta(current_date, last_activity_date) > relativedelta(minutes=15
我希望获得以天为单位的 relativedelta 的总持续时间。 预期: dateutil.timedelta(1 month, 24 days) -> dateutil.timedelta(55
我正在尝试使用 paster serve 运行程序,但我不断收到错误消息: ImportError: No module named dateutil.relativedelta 我正在运行 Pyth
假设我在处理几个月的相对增量。 问题是当我这样做的时候: x = relativedelta(months=12) x.months > 0 当我尝试做这样的事情时,这是一个问题: y = relat
我正在尝试在 sqlalchemy 中实现对相对日期范围(月、年)的基本支持。使用 postgres 作为数据库我认为子类化 sqlalchemy.dialects.postgres.Interval
我是 python 的新手,我遇到了一个小问题,我无法通过谷歌搜索找到答案。我正在运行以下代码: from dateutil import relativedelta as rdelta def di
我正在尝试使用 dateutil 和 relativedelta 来检索两个日期 (runwayMonths) 之间的差异,但我得到了 TypeError: 'module' object is no
我刚刚将我的项目上传到 webfaction 上并收到以下错误。 No module named dateutil.relativedelta 我在我的一个表单中使用这个模块。这与python路径有关
这个问题已经有答案了: Importing a library from (or near) a script with the same name raises "AttributeError: m
我正在尝试在数据框中创建一个新列,使用 Dateutil 的 relativedelta 函数计算一个人的年龄,使用以下代码; df['Age'] = relativedelta(df['Today'
我正在尝试使用 django 中的 F() 对象更新模型的自日期时间字段。 HeatWatchList.objects.filter( user=request.user, next_
您好,我正在尝试使用 dateutil 模块中的 relativedelta。 我想做提到的事情here ,向给定的 datetime 对象添加一些月份。 但是我正在尝试为此使用 Python 3,但
relativedelta 和 timedelta 之间是否有优雅的转换方式? 用例是获取用户输入的 ISO 日期。 Python 的 isodate 将返回 isodate.duration.Dur
我试图通过向日期列添加 6 个月来在我的数据框中创建一个新列。 df_main['m1'] = df_main['date'] + relativedelta(months=6) df_main['d
我是一名优秀的程序员,十分优秀!