Разница в дате между двумя днями в python (миграция из JAVA-кода)

#java #python #date #migration

#java #python #Дата #миграция

Вопрос:

У меня есть код на 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 для этого?

Комментарии:

1. что вы пробовали до сих пор?

2. из datetime импортируйте datetime из dateutil импортируйте relativedelta date1 = datetime.strptime(str(‘2011-08-15 12:00:00’), ‘% Y-%m-%d %H:%M:%S’) date2 = datetime.strptime(str(‘2012-02-15’), ‘%Y-%m-%d’) r = relativedelta.relativedelta(date2, date1) r.месяцы или r.годы или r.дни и т. Д

3. Но дело в том, что я хочу сделать это таким образом, чтобы мы передавали дату 1 и дату2 в качестве входных данных и первую отдельную функцию для дней, недель и месяцев и т.д. И одну общую функцию для любого ввода (дни, неделя, год), который передает пользователь?

Ответ №1:

Из добавленного вами ответа вы можете комбинировать функции, чтобы иметь общие единицы измерения, как ваша 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