#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