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.