Вычитание из отметки в Dart
Сдвиг назад на точный промежуток делают методом
subtract у DateTime с тем же
типом Duration, что и при прибавлении.
Отнимем три недели от экзамена:
var exam = DateTime(2025, 6, 15);
var prep = exam.subtract(Duration(days: 21));
print(prep);
Год назад по календарю задают новой датой с уменьшенным годом. От текущей отметки получим прошлогодний день:
var now = DateTime.now();
var yearAgo = DateTime(now.year - 1, now.month, now.day);
print(yearAgo.year);
Месяцы назад задают так же, как при прибавлении
месяца: через новый DateTime с другим
номером месяца. Число дня может сдвинуться,
если в целевом месяце меньше дней:
var pay = DateTime(2024, 3, 31);
var earlier = DateTime(pay.year, pay.month - 2, pay.day);
print(earlier);
Дана дата:
var exam = DateTime(2025, 6, 15);
Выведите дату 3 недели раньше.
От текущей даты получите дату 1 год
назад и выведите год.
Даны две даты:
var newer = DateTime(2025, 5, 1);
var older = DateTime(newer.year, newer.month - 4, newer.day);
Выведите месяц у более ранней даты.