DateFormat Flutter is one of the trickiest yet most important parts of any Flutter application. The display of date and time in any application enables the user to navigate at what exact time any particular event happened plus it also enables them to take control of the time zone they are working in.
Where it seems easy to have a date time displayed on your screen, it is equally difficult to format it especially when you are a beginner and aren’t aware of the futter framework. However, there are various tools and functions built-in that make flutter date time formatting an easy task.
Let’s begin with how dateformat Flutter works and possible ways to make the formatting of dates and times in Flutter apps easy.
Why Do We Need to Learn DateFormat and Time Formatting in Flutter?
First thing first. First, we need to know why exactly we need flutter datetime formatting in the first place.
The one main reason for the flutter dateformat is the readability. Sometimes when an application fetches the dateformat and the timestamp itself, it might not be understandable for the user. It is mostly in the flutter string to datetime format.
Thanks to the available dateformat package we can now master the date and time format easily and yet the readable form.
In addition to this, we also need dateformat flutter to ensure consistency of data presentation.
How Can We Handle DateFormat in Flutter?
There are several ways to ensure the date_format in Flutter is done right. Here are a few:
- Using Intl Package
- With Dateformat Class
- Using Custom Widgets
With Intl_Package
It is the standard way of flutter datefromat. Futter intl date format package offers various formatting of date and time as per the custom patterns and locales.
Intl_package offers extensive flexibility for internationalization and localization facilities which includes messages, date/number formatting, and parsing.
Step 1: First start by importing the intl_package to dart.
import 'package:intl/intl.dart';
Step 2: Next, create a DateFormat object by specifying the custom format pattern and locale. The most easy and readable format is “MMMM D, Y” which appears as “January 1, 2024″.
final dateFormat = DateFormat('MMMM d, y');
Step 3: Now utilize the flutter dateformat method of the dateformat object to format the Date and time.
final DateTime now = DateTime.now(); final formattedDate = dateFormat.format(now);
Using Custom Widgets
Step 1: We create a custom widget named DateFormattedText, which takes two required parameters: dateTime (the date to be formatted) and formatPattern (the pattern for formatting).
Step 2: Inside the build method of DateFormattedText, we use the DateFormat class to format the provided dateTime according to the formatPattern.
Step 3: The formatted date is displayed as a Text widget within the custom widget.
Step 4: In the MyApp widget, we use the DateFormattedText widget to display the current date with the desired format (‘MMMM d, y’).
Here is the code to do it right:
import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; class DateFormattedText extends StatelessWidget { final DateTime dateTime; final String formatPattern; DateFormattedText({required this.dateTime, required this.formatPattern}); @override Widget build(BuildContext context) { final formattedDate = DateFormat(formatPattern).format(dateTime); return Text( formattedDate, style: TextStyle(fontSize: 18), ); } } void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { final DateTime now = DateTime.now(); return MaterialApp( home: Scaffold( appBar: AppBar( title: Text('Custom Date Formatting Widget'), ), body: Center( child: DateFormattedText( dateTime: now, formatPattern: 'MMMM d, y', ), ), ), ); } }
Which One Is The Best?
As per my suggestion, the custom widget option is the best one because it helps keep your code organized and makes it easier to apply consistent date formatting throughout your Flutter application. You can reuse this widget whenever you need to display formatted dates with different patterns or in multiple parts of your app.
Converting Flutter String to Date Time
Input Code:
String dateString = '2024-01-03'; DateTime dateTime = DateTime.parse(dateString);
Output:
This code will convert the string ‘2024-01-03’ into a DateTime object.
Converting Flutter Datetime to String
Input Code:
import 'package:intl/intl.dart'; void main() { DateTime dateTime = DateTime(2022, 12, 15, 14, 30); // December 15, 2022, at 2:30 PM String formattedDate = DateFormat('yyyy-MM-dd HH:mm').format(dateTime); print(formattedDate); }
Output
This code will convert the current DateTime object into a string in the ‘2022-12-15 14:30 format.
DateFormat Patterns
Pattern |
Output |
DateFormat(‘yMd’) |
1/26/2022 |
DateFormat(‘yMMMMd’) |
January 26, 2022 |
DateFormat(‘yMEd’) | Wed, 1/26/2022 |
DateFormat(‘yMMMEd’) |
Wednesday, Jan 26, 2022 |
DateFormat(‘yMMMMEEEEd’) | Wednesday, January 26, 2022 |
DateFormat(‘yQQQ’) | Q1 2022 |
DateFormat(‘yMMM’) | Jan 2022 |
DateFormat(‘MMMd’) |
Jan 26 |
DateFormat(‘Hm’) | 00:30 |
DateFormat(‘Hms’) | 00:30:04 |
DateFormat(‘j’) | 12 AM |
DateFormat(‘jms’) | 12:30:04 AM |
DateFormat(‘jm’) | 12:30 AM |
DateFormat(‘ms’) | 30:04 |
DateFormat(‘MMMMd’) | January 26 |
DateFormat(‘MMMEd’) | Wed, Jan 26 |
DateFormat(‘MM/dd/yyyy’) | 01/26/2022 |
DateFormat(‘dd/MM/yyyy’) | 26/01/2022 |
DateFormat(‘yyyy-MM-dd’) | 2022-01-26 |
DateFormat(‘yyyy-MM-dd HH:mm:ss’) | 2022-01-26 00:30:04 |
Note:
EEEE means: Day with Full name
E means: Day name with the abbreviation
MM means: Month Number
MMM means: Month Name in Abbreviation
MMMM means: Month name in full
YY means: year last two digits
YYYY means: year
Dd or single d means: date
HH means: hours in 24 format
mm means: minutes
ss means: seconds
Conclusion
Mastering date and time formatting in a Flutter app is essential for a seamless user experience. Proper formatting enhances information presentation, maintains consistency, and caters to various user preferences.
Whether you choose the ‘intl’ package, custom widgets, or code snippets, effective date, and time manipulation will elevate your Flutter app. For complex projects, you can hire a Flutter developer who can streamline the process and ensure your app not only functions perfectly but also offers a polished user interface.