首页 > 解决方案 > python中两天的日期差异(从JAVA代码迁移)

问题描述

我在 JAVA 中有一个代码:

公共类函数1 {

public long daysBetween(LocalDateTime dt1, LocalDateTime dt2) {
   
    return timeDiffInGivenUnits(dt1, dt2, ChronoUnit.DAYS) ;
}
public long weeksBetween(LocalDateTime dt1, LocalDateTime dt2) {
    return timeDiffInGivenUnits(dt1, dt2, ChronoUnit.WEEKS) ;
}
public long monthsBetween(LocalDateTime dt1, LocalDateTime dt2) {
    return timeDiffInGivenUnits(dt1, dt2, ChronoUnit.MONTHS) ;
}
public long yearsBetween(LocalDateTime dt1, LocalDateTime dt2) {
    return timeDiffInGivenUnits(dt1, dt2, ChronoUnit.YEARS) ;
}
private long timeDiffInGivenUnits(LocalDateTime dt1, LocalDateTime dt2, ChronoUnit unit) {
    long daysBetween = 0l ;
  
    return daysBetween ;
}

}

这个的python代码是什么?

标签: javapythondatemigration

解决方案


从您添加的答案中,您可以将函数组合为具有通用单元,作为您的第 5 个函数,如下所示。

class FsFunction:
    def days_between(self, d1: datetime, d2: datetime):
        r = relativedelta.relativedelta(d1, d2)
        return r.days
    def weeks_between(self, d1: datetime, d2: datetime):
        r = relativedelta.relativedelta(d1, d2)
        return r.weeks
    def months_between(self, d1: datetime, d2: datetime):
        r = relativedelta.relativedelta(d1, d2)
        return r.months
    def years_between(self, d1: datetime, d2: datetime):
        r = relativedelta.relativedelta(d1, d2)
        return r.years
    def units_between(self, d1: datetime, d2: datetime, unit):
        if unit=="days":
            return self.days_between(d1,d2)
        elif unit=="weeks":
            return self.weeks_between(d1,d2)
        elif unit=="months":
            return self.months_between(d1,d2)
        elif unit=="years":
            return self.years_between(d1,d2)
        else:
            return None

推荐阅读