我怎样才能从今天的日期和一个人的出生日期中找到蟒蛇的年龄?birthdate来自Django模型中的DateField.
我正在用 Python 做一些时间计算。
其中一部分是试图:
给定一个日期,加上时间间隔(X 年,X 个月,X 周),返回日期
IE
我查看了 datetime 和datetime.timedelta 文档
class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, week=0)¶。
如果我想增加一定数量的小时数或周数,这些似乎效果很好。然而,
例如
start = datetime.datetime(2000, 1, 1)
# expected output: datetime.datetime(2001, 1, 1)
# with the weeks, etc arguments given in timedelta, this fails unsurprisingly e.g
start + datetime.timedelta(weeks = 52)
# returns datetime.datetime(2000, 12, 30, 0, 0)
Run Code Online (Sandbox Code Playgroud)
使用 datetime 的基本工具是否可以进行基于年份的操作 - 如果可以,我将如何进行?
我意识到对于年份示例,我可以只做 …
我想使用Python解析如下所示的自由文本时间间隔:
有没有一种无痛的方法可以做到这一点,理想情况下只需调用一个库函数?
我试过了:
dateutil.parser.parse(),它可以理解几小时而不是几天或更长时间.mx.DateTime.DateTimeDeltaFrom(),它可以通过几天了解,但在数周或更长的时间内失败,并且默默地(例如,它可能会创建一个长度为0的区间,或者将"2个月"解析为2分钟).我正在尝试在django的保存模型中执行基本日期计算,请参阅下面的代码:
class Purchase(models.Model):
purchase_date = models.DateField()
purchase_place = models.CharField(verbose_name='Place of Purchase', max_length=255)
purchaseCategory = models.ForeignKey(PurchaseCategory, verbose_name='Purchase Category')
cost = models.DecimalField(max_digits=11, decimal_places=2)
warranty_period_number = models.IntegerField()
warranty_period_type = models.CharField(max_length=255, choices=(('m', 'Month(s)'), ('y', 'Year(s)')))
warranty_end_date = models.DateField(editable=False)
scan = models.CharField(max_length=255)
alerts = models.BooleanField(verbose_name='Receive Email Alerts?')
user = models.ForeignKey('auth.User', editable=False)
created = models.DateTimeField(editable=False, auto_now_add=True)
modified = models.DateTimeField(editable=False, auto_now=True)
#custom save model
def save(self, *args, **kwargs):
#figure out warranty end date
if self.warranty_period_type == 'm':
self.warranty_end_date = self.purchase_date + self.purchase_date.timedelta(months=self.warranty_period_number)
else:
self.warranty_end_date = self.purchase_date + …Run Code Online (Sandbox Code Playgroud) 下午全部
寻找两个日期到小数点后四个位之间的年数。我的资料:
df_Years = df[
df['state'].str.contains('Done')
][[
'maturity_date'
]].copy()
df_Years['maturity_date'] = pd.to_datetime(df_Date['maturity_date'])
df_Years['Today'] = pd.to_datetime('today')
display(df_Years.head(6))
maturity_date Today
13 2022-12-15 2018-03-21
81 2028-02-15 2018-03-21
82 2045-12-01 2018-03-21
100 2025-08-18 2018-03-21
115 2019-01-16 2018-03-21
116 2018-12-21 2018-03-21
display(df_Years.dtypes)
maturity_date datetime64[ns]
Today datetime64[ns]
dtype: object
#Dataframe types
Run Code Online (Sandbox Code Playgroud)
尝试1:
df_Years['Year_To_Maturity'] = df_Years['maturity_date'] - df_Years['Today']
df_Years['Year_To_Maturity'] = df_Years['Year_To_Maturity'].apply(lambda x: float(x.item().days)/365)
Run Code Online (Sandbox Code Playgroud)
错误:
AttributeError: 'Timedelta' object has no attribute 'item'
Run Code Online (Sandbox Code Playgroud)
尝试2:
df_Years['Year_To_Maturity'] = df_Years['maturity_date'] - df_Years['Today']
df_Years['Year_To_Maturity'] = df_Years['Year_To_Maturity'].apply(lambda x: float(x.item().days)/365)
Run Code Online (Sandbox Code Playgroud)
输出:
maturity_date Today Year_To_Maturity
13 …Run Code Online (Sandbox Code Playgroud)