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
Replay: real traced execution (multi-file project)
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);
}
  1. d ← DateTime.utc(2024-07-04 09:05:00)

    1void main() {2  var d = DateTime.utc(2024, 7, 4, 9, 5);3  var year = d.year.toString();
    values this stepDateTime.utc(2024-07-04 09:05:00)d
  2. year ← 2024

    2var d = DateTime.utc(2024, 7, 4, 9, 5);3var year = d.year.toString();4var month = d.month.toString().padLeft(2, '0');
    values this step2024year2024d.year
  3. month ← 07

    3var year = d.year.toString();4var month = d.month.toString().padLeft(2, '0');5var day = d.day.toString().padLeft(2, '0');
    values this step07month7d.month
  4. day ← 04

    4var month = d.month.toString().padLeft(2, '0');5var day = d.day.toString().padLeft(2, '0');6var hour = d.hour.toString().padLeft(2, '0');
    values this step04day4d.day
  5. hour ← 09

    5var day = d.day.toString().padLeft(2, '0');6var hour = d.hour.toString().padLeft(2, '0');7var minute = d.minute.toString().padLeft(2, '0');
    values this step09hour9d.hour
  6. minute ← 05

    6var hour = d.hour.toString().padLeft(2, '0');7var minute = d.minute.toString().padLeft(2, '0');8var label = '$year-$month-$day $hour:$minute UTC';
    values this step05minute5d.minute
  7. label ← 2024-07-04 09:05 UTC

    7var minute = d.minute.toString().padLeft(2, '0');8var label = '$year-$month-$day $hour:$minute UTC';9print(label);
    values this step2024-07-04 09:05 UTClabel
  8. print(label);

    8  var label = '$year-$month-$day $hour:$minute UTC';9  print(label);10}
    output2024-07-04 09:05 UTC
    values this step2024-07-04 09:05 UTClabel
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.