Async and Practical
Format DateTime with padLeft
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);
}
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)dyear ← 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.yearmonth ← 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.monthday ← 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.dayhour ← 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.hourminute ← 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.minutelabel ← 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 UTClabelprint(label);
8 var label = '$year-$month-$day $hour:$minute UTC';9 print(label);10}output2024-07-04 09:05 UTCvalues 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.