Formatting a DateTime without the intl package means pulling out each field, converting to text, and padding short values. padLeft(2, '0') keeps single-digit months and days at width 2 so the label stays aligned.

Program

Play the program to build a label like 2024-07-04 09:05 UTC by padding each field.

datetime_format.dart
void main() {
  var d = DateTime.utc(2024, 7, 4, 9, 5);
  var year = d.year.toString();
  var month = d.month.toString().padLeft(2, '0');
  var day = d.day.toString().padLeft(2, '0');
  var hour = d.hour.toString().padLeft(2, '0');
  var minute = d.minute.toString().padLeft(2, '0');
  var label = '$year-$month-$day $hour:$minute UTC';
  print(label);
}
toString Numeric fields like `d.month` are `int`; `.toString()` converts them to text first.
padLeft `padLeft(2, '0')` pads a one-digit value like `7` to `07`, keeping the format fixed-width.
interpolation A single template string composes the final label from year, padded month/day, and padded hour:minute.