Home > other >  Flutter: Display local datetimes correctly
Flutter: Display local datetimes correctly

Time:05-31

let's say I have a DateTime object and I want to display it in the correct local format.

If I do the following on a German device I get this:

dateTime.toLocal().toString()
// Prints
2022-05-28 23:29:19.518

However, I would expect or desire more something like this for a German device: 28.5.2022 23:29:19

I know that I can format the DateTime but that would just be hardcoding it for a certain locale.

Weirdly enough all the solutions that I found for this on StackOverflow are either hardcoding the format or only apply to Dart, not Flutter.

What is the correct way to display a local datetime in Flutter?

CodePudding user response:

You can use this package intl and localise dates like

var format = DateFormat.yMd('ar');
var dateString = format.format(DateTime.now());

CodePudding user response:

Using the intl package which was mentioned here already, this has been working well for me so far:

DateFormat dateTimeFormat = DateFormat.jm(Localizations.localeOf(context).toString());
DateTime dt = DateTime.fromMicrosecondsSinceEpoch(entity.syncDateTime);
dateTimeFormat.format(dt);

To get outputs which are not yet supported I, for example, concat a ymd formatted DateTime string with a jm formatted DateTime string.

  • Related