Epoch and Date Time Conversion in Dart
📅 Last updated: September 27, 2026
Date and time handling is an important part of Dart application development.
Dart provides the DateTime class for working with dates, times,
UTC values, local time, and Unix timestamps.
In this guide, we will explain how to get the current date and time in Dart, convert Unix or epoch timestamps to dates, convert dates to Unix timestamps, format dates and times, and work with ISO 8601 date strings.
Get Current Date and Time in Dart
Use DateTime.now() to create a DateTime object
containing the current date and time in the local time zone.
final now = DateTime.now();
print(now);
Dart's DateTime class represents an instant in time and can be
associated with either the local time zone or UTC.
Get Current UTC Date and Time in Dart
Use DateTime.now().toUtc() to get the current date and time
represented in UTC.
final utcNow = DateTime.now().toUtc();
print(utcNow);
You can also create a UTC DateTime directly using
DateTime.utc().
Get Unix Timestamp in Dart
Dart provides the millisecondsSinceEpoch property to get the
number of milliseconds since the Unix epoch, which is
January 1, 1970 00:00:00 UTC.
Get Unix Timestamp in Seconds
Dart's built-in timestamp value is expressed in milliseconds. To obtain a Unix timestamp in seconds, divide the value by 1000.
final timestamp =
DateTime.now().millisecondsSinceEpoch ~/ 1000;
print(timestamp);
Get Unix Timestamp in Milliseconds
final timestampMilliseconds =
DateTime.now().millisecondsSinceEpoch;
print(timestampMilliseconds);
The millisecondsSinceEpoch value is independent of the local
time zone.
Get Unix Timestamp in Microseconds
Dart also provides microsecondsSinceEpoch when higher
timestamp precision is required.
final timestampMicroseconds =
DateTime.now().microsecondsSinceEpoch;
print(timestampMicroseconds);
This can be useful when working with applications that require more precision than milliseconds.
Convert Unix Timestamp to Date in Dart
Use DateTime.fromMillisecondsSinceEpoch() to convert a Unix
timestamp in milliseconds into a Dart DateTime.
const timestamp = 1767225600000;
final date =
DateTime.fromMillisecondsSinceEpoch(timestamp);
print(date);
Dart's DateTime class also provides
DateTime.fromMicrosecondsSinceEpoch() for microsecond
timestamps.
Convert Unix Seconds to Date
If your Unix timestamp is expressed in seconds, multiply it by 1000
before passing it to fromMillisecondsSinceEpoch().
const timestamp = 1767225600;
final date =
DateTime.fromMillisecondsSinceEpoch(timestamp * 1000);
print(date);
Convert Unix Timestamp to UTC Date
Pass isUtc: true when you want the resulting
DateTime to represent UTC.
const timestamp = 1767225600000;
final date = DateTime.fromMillisecondsSinceEpoch(
timestamp,
isUtc: true,
);
print(date);
Convert Date to Unix Timestamp in Dart
Convert a Dart DateTime into a Unix timestamp using
millisecondsSinceEpoch.
final date = DateTime.now();
final timestamp = date.millisecondsSinceEpoch;
print(timestamp);
Convert Date to Unix Timestamp in Seconds
final date = DateTime.now();
final timestamp =
date.millisecondsSinceEpoch ~/ 1000;
print(timestamp);
Create a Specific Date and Time in Dart
Use the DateTime constructor to create a specific local
date and time.
final date = DateTime(
2026,
1,
1,
12,
30,
0,
);
print(date);
The constructor accepts year, month, day, hour, minute, second, millisecond, and microsecond values.
Create a UTC Date and Time in Dart
Use DateTime.utc() when the date and time should be created
explicitly in UTC.
final date = DateTime.utc(
2026,
1,
1,
0,
0,
0,
);
print(date);
Convert Local Date Time to UTC in Dart
Use the toUtc() method to convert a local
DateTime to its equivalent UTC representation.
final localDate = DateTime.now();
final utcDate = localDate.toUtc();
print(utcDate);
Convert UTC Date Time to Local Time in Dart
Use toLocal() to represent a UTC date in the local
time zone of the system running the Dart application.
final utcDate = DateTime.now().toUtc();
final localDate = utcDate.toLocal();
print(localDate);
Format Date and Time in Dart
Dart's core DateTime class provides
toString() and toIso8601String() for common
date representations. For custom localized formatting, the Dart
intl package can be used.
final date = DateTime.now();
print(date.toString());
For example, a DateTime can be formatted manually using
its individual properties.
final date = DateTime.now();
final formatted =
'${date.year}-'
'${date.month.toString().padLeft(2, '0')}-'
'${date.day.toString().padLeft(2, '0')} '
'${date.hour.toString().padLeft(2, '0')}:'
'${date.minute.toString().padLeft(2, '0')}:'
'${date.second.toString().padLeft(2, '0')}';
print(formatted);
Convert Date to ISO 8601 in Dart
Use toIso8601String() to convert a Dart
DateTime into an ISO 8601 string.
final date = DateTime.utc(
2026,
1,
1,
0,
0,
0,
);
final isoDate = date.toIso8601String();
print(isoDate);
The Dart API returns an extended ISO 8601 representation and includes
Z when the DateTime is UTC.
Parse an ISO 8601 Date in Dart
Use DateTime.parse() to parse supported ISO 8601 date and
time strings.
const isoString =
'2026-01-01T00:00:00Z';
final date = DateTime.parse(isoString);
print(date);
DateTime.parse() accepts a subset of ISO 8601 and RFC 3339
formats. An invalid value results in a FormatException.
Convert ISO 8601 Date to Unix Timestamp in Dart
Parse the ISO 8601 string into a DateTime and then use
millisecondsSinceEpoch.
const isoString =
'2026-01-01T00:00:00Z';
final date = DateTime.parse(isoString);
final timestamp =
date.millisecondsSinceEpoch ~/ 1000;
print(timestamp);
Get Day, Month and Year in Dart
The DateTime object exposes individual properties for
retrieving the year, month, day, hour, minute and second.
final date = DateTime.now();
final day = date.day;
final month = date.month;
final year = date.year;
print('Day: $day');
print('Month: $month');
print('Year: $year');
Get Time Zone Information in Dart
Use isUtc to determine whether a DateTime
represents UTC and timeZoneName to retrieve the system's
time-zone name.
final date = DateTime.now();
print('UTC: ${date.isUtc}');
print('Time Zone: ${date.timeZoneName}');
print('Offset: ${date.timeZoneOffset}');
The exact value returned by timeZoneName is provided by
the operating system and can be an abbreviation or a full name.
Calculate Difference Between Two Dates in Dart
Use the difference() method to calculate the duration
between two DateTime values.
final startDate = DateTime.utc(2026, 1, 1);
final endDate = DateTime.utc(2026, 1, 15);
final difference = endDate.difference(startDate);
print('Days: ${difference.inDays}');
The returned value is a Duration, which can be used to
obtain the difference in days, hours, minutes, seconds, and other
units.
Add or Subtract Time in Dart
Use Duration together with add() or
subtract() to move a date forward or backward.
final date = DateTime.utc(2026, 1, 1);
final futureDate =
date.add(const Duration(days: 30));
final previousDate =
date.subtract(const Duration(days: 7));
print(futureDate);
print(previousDate);
When working across daylight-saving transitions, Dart recommends taking care with local-time calculations; UTC dates can avoid some of these clock-shift issues.
Dart Unix Timestamp Conversion Examples
| Conversion | Dart Code |
|---|---|
| Current date and time | DateTime.now() |
| Current UTC date and time | DateTime.now().toUtc() |
| Unix timestamp in seconds | DateTime.now().millisecondsSinceEpoch ~/ 1000 |
| Unix timestamp in milliseconds | DateTime.now().millisecondsSinceEpoch |
| Unix timestamp in microseconds | DateTime.now().microsecondsSinceEpoch |
| Timestamp to Date | DateTime.fromMillisecondsSinceEpoch(timestamp) |
| Date to timestamp | date.millisecondsSinceEpoch |
| Date to ISO 8601 | date.toIso8601String() |
| Parse ISO 8601 | DateTime.parse(isoString) |
| Calculate date difference | endDate.difference(startDate) |
Complete Dart Epoch Conversion Example
The following example demonstrates common Unix timestamp and date-time operations in one Dart program.
void main() {
// Current date and time
final now = DateTime.now();
// Current UTC date and time
final utcNow = now.toUtc();
// Unix timestamp in seconds
final timestampSeconds =
now.millisecondsSinceEpoch ~/ 1000;
// Unix timestamp in milliseconds
final timestampMilliseconds =
now.millisecondsSinceEpoch;
// Unix timestamp in microseconds
final timestampMicroseconds =
now.microsecondsSinceEpoch;
// Convert timestamp back to DateTime
final convertedDate =
DateTime.fromMillisecondsSinceEpoch(
timestampMilliseconds,
);
// ISO 8601
final isoDate =
utcNow.toIso8601String();
print('Date: $now');
print('UTC: $utcNow');
print('Unix Timestamp: $timestampSeconds');
print('Milliseconds: $timestampMilliseconds');
print('Microseconds: $timestampMicroseconds');
print('Converted Date: $convertedDate');
print('ISO 8601: $isoDate');
}
Dart Date and Unix Timestamp Quick Reference
// Current date and time
final date = DateTime.now();
// Current UTC date
final utcDate = DateTime.now().toUtc();
// Unix timestamp in seconds
final seconds =
date.millisecondsSinceEpoch ~/ 1000;
// Unix timestamp in milliseconds
final milliseconds =
date.millisecondsSinceEpoch;
// Unix timestamp in microseconds
final microseconds =
date.microsecondsSinceEpoch;
// Unix timestamp to DateTime
final convertedDate =
DateTime.fromMillisecondsSinceEpoch(
milliseconds,
);
// DateTime to ISO 8601
final isoString =
date.toIso8601String();
// ISO 8601 to DateTime
final parsedDate =
DateTime.parse(isoString);
// Difference between dates
final difference =
date.difference(convertedDate);
Conclusion
Dart's built-in DateTime class provides the core features
needed for Unix timestamp and date-time conversion. You can use
milliseconds or microseconds since the Unix epoch, convert timestamps
into DateTime objects, convert dates back to Unix
timestamps, work with UTC and local time, and parse or generate ISO
8601 strings.
You can use our Unix Timestamp Converter to convert Unix timestamps and human-readable dates online.