convertHHMMTimeStringToDateTime method

DateTime convertHHMMTimeStringToDateTime(
  1. DateTime? dateTheTimeIsBasedOn
)

Implementation

DateTime convertHHMMTimeStringToDateTime(DateTime? dateTheTimeIsBasedOn) {
  final trimmed = trim();
  final parts = trimmed.split(':');
  if (parts.length != 2) {
    throw const FormatException('Unrecognized date format');
  }
  bool isNumeric(String s) =>
      s.isNotEmpty && s.codeUnits.every((c) => c >= 48 && c <= 57);
  if (!isNumeric(parts[0]) ||
      !isNumeric(parts[1]) ||
      parts[0].length > 2 ||
      parts[1].length > 2) {
    throw const FormatException('Unrecognized date format');
  }
  final int hour = int.parse(parts[0]);
  final int minute = int.parse(parts[1]);

  if (dateTheTimeIsBasedOn != null) {
    return dateTheTimeIsBasedOn.copyWith(
      hour: hour,
      minute: minute,
      second: 0,
      millisecond: 0,
      microsecond: 0,
      isUtc: true,
    );
  }

  //else, return the time in DateTime based on now's date
  return DateTime.now().toUtc().copyWith(
        hour: hour,
        minute: minute,
        second: 0,
        millisecond: 0,
        microsecond: 0,
      );
}