7 удобных методов работы с будними днями во Flutter

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

Метод 1: получение текущего дня недели
Чтобы получить текущий день недели, вы можете использовать свойство DateTime.now().weekday. Он возвращает целое число, обозначающее текущий день недели, где понедельник — 1, а воскресенье — 7.

import 'package:flutter/material.dart';
void main() {
  DateTime now = DateTime.now();
  int currentWeekday = now.weekday;
  print('Today is: ${_getWeekdayName(currentWeekday)}');
}
String _getWeekdayName(int weekday) {
  List<String> weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
  return weekdays[weekday - 1];
}

Метод 2. Проверка того, является ли заданная дата выходным.
Чтобы определить, приходится ли определенная дата на выходные (суббота или воскресенье), вы можете использовать 9 класса DateTimeи проверьте, равно ли оно 6 (суббота) или 7 (воскресенье).

bool isWeekend(DateTime date) {
  int weekday = date.weekday;
  return weekday == 6 || weekday == 7;
}

Метод 3: расчет следующего рабочего дня
Предположим, вы хотите найти следующий рабочий день (исключая выходные) от заданной даты. Вы можете использовать цикл для итерации, пока не будет найден день, не являющийся выходным.

DateTime findNextWorkingDay(DateTime date) {
  DateTime nextDay = date;
  while (isWeekend(nextDay)) {
    nextDay = nextDay.add(Duration(days: 1));
  }
  return nextDay;
}

Метод 4: получение списка дней недели в диапазоне
Если вам нужно создать список дней недели в заданном диапазоне дат, вы можете использовать класс DateTimeи цикл для итерации просмотреть диапазон и отфильтровать выходные дни.

List<DateTime> getWeekdaysInRange(DateTime startDate, DateTime endDate) {
  List<DateTime> weekdays = [];
  DateTime currentDate = startDate;
  while (currentDate.isBefore(endDate) || currentDate.isAtSameMomentAs(endDate)) {
    if (!isWeekend(currentDate)) {
      weekdays.add(currentDate);
    }
    currentDate = currentDate.add(Duration(days: 1));
  }
  return weekdays;
}

Метод 5: получение названия дня недели из индекса
Предположим, у вас есть индекс, представляющий день недели, и вы хотите получить его название. Вы можете использовать список названий дней недели и получать доступ к названию с помощью индекса.

String getWeekdayNameFromIndex(int index) {
  List<String> weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
  return weekdays[index - 1];
}

Метод 6: форматирование названий дней недели.
Если вы хотите отображать дни недели в определенном формате, например, в виде сокращенных названий, вы можете использовать класс DateFormatиз класса intlпакет.

import 'package:intl/intl.dart';
String formatWeekdayName(int weekday) {
  DateFormat formatter = DateFormat.E(); // E returns the abbreviated weekday name
  return formatter.format(DateTime(2022, 1, weekday));
}

Метод 7: определение количества дней недели между двумя датами
Чтобы вычислить количество дней недели между двумя заданными датами, вы можете пройтись по диапазону и подсчитать дни недели, которые не являются выходными.

int countWeekdaysBetween(DateTime startDate, DateTime endDate) {
  int count = 0;
  DateTime currentDate = startDate;
  while (currentDate.isBefore(endDate) || currentDate.isAtSameMomentAs(endDate)) {
    if (!isWeekend(currentDate)) {
      count++;
    }
    currentDate = currentDate.add(Duration(days: 1));
  }
  return count;
}

С помощью этих методов работа с будними днями во Flutter упрощается. Если вам нужно получить текущий день, рассчитать следующий рабочий день или выполнить какие-либо другие операции, связанные с будними днями, эти фрагменты кода окажутся неоценимыми. Используя возможности Dart и Flutter, вы можете создавать надежные приложения, которые легко справляются с работой в будние дни.