Преобразование 12-часового времени в 24-часовое в Dart: простые методы без внешних пакетов

Преобразование времени — распространенная задача в программировании, и Dart предлагает несколько простых методов преобразования 12-часового времени в 24-часовое без использования внешних пакетов. В этой статье мы рассмотрим несколько подходов к достижению такого преобразования, используя разговорный язык и попутно предоставляя примеры кода. Независимо от того, новичок вы или опытный разработчик Dart, это руководство поможет вам овладеть искусством преобразования времени.

Метод 1: использование условных операторов (if/else)
Один из самых простых способов преобразования 12-часового времени в 24-часовое — использование условных операторов, таких как if/else. Вот пример фрагмента кода:

String convertTo24HourFormat(int hour, int minute, String period) {
  if (period.toLowerCase() == 'pm' && hour != 12) {
    hour += 12;
  } else if (period.toLowerCase() == 'am' && hour == 12) {
    hour = 0;
  }

  String formattedHour = hour.toString().padLeft(2, '0');
  String formattedMinute = minute.toString().padLeft(2, '0');

  return '$formattedHour:$formattedMinute';
}
void main() {
  int hour = 3;
  int minute = 30;
  String period = 'pm';

  String convertedTime = convertTo24HourFormat(hour, minute, period);
  print(convertedTime); // Output: 15:30
}

Метод 2: использование класса DateTime
Класс DateTime в Dart предоставляет встроенный способ обработки операций с временем и датой. Мы можем использовать этот класс для преобразования 12-часового времени в 24-часовое. Вот пример:

String convertTo24HourFormat(int hour, int minute, String period) {
  DateTime datetime = DateTime(2024, 1, 1, hour, minute);

  if (period.toLowerCase() == 'pm') {
    datetime = datetime.add(Duration(hours: 12));
  }

  String formattedTime = '${datetime.hour.toString().padLeft(2, '0')}:${datetime.minute.toString().padLeft(2, '0')}';

  return formattedTime;
}
void main() {
  int hour = 9;
  int minute = 45;
  String period = 'am';

  String convertedTime = convertTo24HourFormat(hour, minute, period);
  print(convertedTime); // Output: 09:45
}

Метод 3: использование манипуляций со строками
Другой подход заключается в непосредственном манипулировании входной строкой для преобразования 12-часового времени в 24-часовое. Вот пример:

String convertTo24HourFormat(String time) {
  String period = time.substring(time.length - 2).toLowerCase();
  String hourString = time.substring(0, time.indexOf(':'));
  int hour = int.parse(hourString);

  if (period == 'pm' && hour != 12) {
    hour += 12;
  } else if (period == 'am' && hour == 12) {
    hour = 0;
  }

  String convertedTime = '$hour:${time.substring(time.indexOf(':') + 1, time.length - 2)}';

  return convertedTime;
}
void main() {
  String time = '11:20 pm';

  String convertedTime = convertTo24HourFormat(time);
  print(convertedTime); // Output: 23:20
}

В этой статье мы рассмотрели три различных метода преобразования 12-часового времени в 24-часовое в Dart без использования внешних пакетов. Используя условные операторы, класс DateTime или манипуляции со строками, вы можете легко добиться желаемого преобразования. Не забудьте выбрать метод, который соответствует вашим требованиям и стилю кодирования. Преобразование времени — фундаментальный навык для любого программиста, и, имея в своем распоряжении эти методы, вы будете хорошо подготовлены к выполнению операций, связанных со временем, в ваших приложениях Dart.