Как получить разницу двух дат в неделях, месяцах и годах во Flutter

В этом уроке мы покажем вам, как найти разницу между двумя датами в неделях, месяцах и годах во Flutter. В дарте сейчас нет возможности найти разницу в неделях, месяцах и годах, есть только дни, часы, минуты и секунды.

Способ 1: без какого-либо пакета:

Вы можете найти разницу между двумя датами в неделях, месяцах и годах без использования какого-либо пакета или плагина с помощью кода ниже:

DateTime mytime = DateTime.now().subtract(Duration(hours: 23456));
print(mytime); //2020-05-07 06:56:55.501654
print(DateTime.now()); ////2023-01-09 14:56:55.510348

Duration diff = DateTime.now().difference(mytime);
int diffyears1 = (diff.inDays / 365).toInt();
int diffmonths1 = (diff.inDays / 30).toInt();
int diffweeks1 = (diff.inDays / 7).toInt();

print(diffyears1); //Output: 2
print(diffmonths1); //Output: 32
print(diffweeks1); //Output: 139

Здесь годы, месяцы и недели разные, а не вместе взятые.

Способ 2: с пакетом Jiffy

Теперь добавьте пакет Jiffy в свой проект, добавив следующие строки в файл pubspec.yaml.

dependencies:
  flutter:
    sdk: flutter
  jiffy: ^5.0.0

Теперь используйте код ниже:

import 'package:jiffy/jiffy.dart';
DateTime mytime = DateTime.now().subtract(Duration(hours: 23456));
print(mytime); //2020-05-07 06:56:55.501654
print(DateTime.now()); ////2023-01-09 14:56:55.510348

num diffyears = Jiffy(DateTime.now()).diff(mytime, Units.YEAR);
num diffmonths = Jiffy(DateTime.now()).diff(mytime, Units.MONTH);
num diffweeks = Jiffy(DateTime.now()).diff(mytime, Units.WEEK);

print(diffyears);  //Output: 2
print(diffmonths); //Output: 32
print(diffweeks); //Output: 139

Здесь годы, месяцы и недели не объединяются.

Как получить разницу между двумя датами, объединенными в недели, месяцы, годы:

DateTime mytime = DateTime.now().subtract(Duration(hours: 23456));
print(mytime); //2020-05-07 06:56:55.501654
print(DateTime.now()); ////2023-01-09 14:56:55.510348

Duration diff = DateTime.now().difference(mytime);

int days = diff.inDays;
int years = (days / 365).toInt();
int months =  ((days - (years * 365)) / 30).toInt();
int weeks = ((days - (years * 365 + months * 30)) / 7).toInt();

print(years); //Output: 2
print(months); //Output: 8
print(weeks); //Output: 1
//here is the combined difference on years, months and weeks

Здесь разница составляет 2 года, 8 месяцев и 1 неделю вместе взятых, в приведенном выше коде различия другие.

Таким образом, вы можете получить разницу между двумя датами в неделях, месяцах и годах.

1.30 GEEK