Getting the current date and time is a fundamental requirement in many apps, from displaying a timestamp on a message to setting a deadline for a task. In Flutter, this is incredibly easy to do using Dart’s built-in DateTime
class.
This guide will walk you through getting the current time and, just as importantly, formatting it into a user-friendly string.
1. Getting the Current DateTime
Object
To get the current date and time, you simply use the DateTime.now()
constructor. This returns a DateTime
object containing all the information about the current moment, right down to the microsecond.
Code Example
void main() {
// Get the current date and time
final DateTime now = DateTime.now();
print(now);
// Example Output: 2025-07-05 17:31:20.123
}
DartWhile this gives you the data, the default format isn’t very user-friendly. For that, we need to format it.
2. Formatting the Date and Time
The best way to format a DateTime
object is with the official intl
package. It provides a powerful and flexible DateFormat
class for this purpose.
Step A: Add the intl
Package
First, add the intl
package to your pubspec.yaml
file:
YAML
dependencies:
flutter:
sdk: flutter
intl: ^0.19.0 # Use the latest version
DartDon’t forget to run flutter pub get
in your terminal to install it.
Step B: Use DateFormat
to Format Your Date
Now you can import the package and use DateFormat
to create any format you need.
Code Example
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
class DateTimeScreen extends StatelessWidget {
const DateTimeScreen({super.key});
@override
Widget build(BuildContext context) {
// 1. Get the current DateTime
final now = DateTime.now();
// 2. Create different formatters
final formatterDate = DateFormat('yyyy-MM-dd');
final formatterTime = DateFormat('h:mm a');
final formatterFull = DateFormat('EEEE, MMMM d, y');
// 3. Format the DateTime
final formattedDate = formatterDate.format(now); // 2025-07-05
final formattedTime = formatterTime.format(now); // 5:31 PM
final formattedFull = formatterFull.format(now); // Saturday, July 5, 2025
return Scaffold(
appBar: AppBar(
title: const Text('Date and Time'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'Date: $formattedDate',
style: const TextStyle(fontSize: 24),
),
Text(
'Time: $formattedTime',
style: const TextStyle(fontSize: 24),
),
const SizedBox(height: 20),
Text(
formattedFull,
style: const TextStyle(fontSize: 20),
),
],
),
),
);
}
}
DartYou can find a full list of formatting patterns in the intl
package documentation.
3. Accessing Individual Date and Time Components
If you need to perform logic based on a specific part of the date (like the year or month), you can access these components directly from the DateTime
object as properties.
final now = DateTime.now();
int year = now.year; // 2025
int month = now.month; // 7 (for July)
int day = now.day; // 5
int hour = now.hour; // 17 (24-hour format)
int minute = now.minute; // 31
int weekday = now.weekday; // 6 (where Saturday is 6)
// Example usage
if (now.weekday == DateTime.saturday) {
print("It's the weekend!");
}
DartKey Takeaways
- Get the object: Use
DateTime.now()
to get the current moment. - Format for users: Use the
intl
package and itsDateFormat
class to convert theDateTime
object into a human-readable string. - Access for logic: Use properties like
.year
,.month
, and.weekday
for conditional logic.