DateTime class
An instant in time, such as July 20, 1969, 8:18pm GMT.
DateTimes can represent time values that are at a distance of at most 100,000,000 days from epoch (1970-01-01 UTC): -271821-04-20 to 275760-09-13.
Create a DateTime object by using one of the constructors or by parsing a correctly formatted string, which complies with a subset of ISO 8601. Note that hours are specified between 0 and 23, as in a 24-hour clock. For example:
var now = DateTime.now(); var berlinWallFell = DateTime.utc(1989, 11, 9); var moonLanding = DateTime.parse("1969-07-20 20:18:04Z"); // 8:18pm
A DateTime object is anchored either in the UTC time zone or in the local time zone of the current computer when the object is created.
Once created, neither the value nor the time zone of a DateTime object may be changed.
You can use properties to get the individual units of a DateTime object.
assert(berlinWallFell.month == 11); assert(moonLanding.hour == 20);
For convenience and readability, the DateTime class provides a constant for each day and month name - for example, august and friday. You can use these constants to improve code readability:
var berlinWallFell = DateTime.utc(1989, DateTime.november, 9); assert(berlinWallFell.weekday == DateTime.thursday);
Day and month values begin at 1, and the week starts on Monday. That is, the constants january and monday are both 1.
Working with UTC and local time
A DateTime object is in the local time zone unless explicitly created in the UTC time zone.
var dDay = DateTime.utc(1944, 6, 6);
Use isUtc to determine whether a DateTime object is based in UTC. Use the methods toLocal and toUtc to get the equivalent date/time value specified in the other time zone. Use timeZoneName to get an abbreviated name of the time zone for the DateTime object. To find the difference between UTC and the time zone of a DateTime object call timeZoneOffset.
Comparing DateTime objects
The DateTime class contains several handy methods, such as isAfter, isBefore, and isAtSameMomentAs, for comparing DateTime objects.
assert(berlinWallFell.isAfter(moonLanding) == true); assert(berlinWallFell.isBefore(moonLanding) == false);
Using DateTime with Duration
Use the add and subtract methods with a Duration object to create a DateTime object based on another. For example, to find the date that is sixty days (24 * 60 hours) after today, write:
var now = DateTime.now(); var sixtyDaysFromNow = now.add(const Duration(days: 60));
To find out how much time is between two DateTime objects use difference, which returns a Duration object:
var difference = berlinWallFell.difference(moonLanding); assert(difference.inDays == 7416);
The difference between two dates in different time zones is just the number of nanoseconds between the two points in time. It doesn't take calendar days into account. That means that the difference between two midnights in local time may be less than 24 hours times the number of days between them, if there is a daylight saving change in between. If the difference above is calculated using Australian local time, the difference is 7415 days and 23 hours, which is only 7415 whole days as reported by inDays
.
Other resources
See Duration to represent a span of time. See Stopwatch to measure timespans.
The DateTime class does not provide internationalization. To internationalize your code, use the intl package.
- Implemented types
Constructors
- DateTime(int year, [int month = 1, int day = 1, int hour = 0, int minute = 0, int second = 0, int millisecond = 0, int microsecond = 0])
- Constructs a DateTime instance specified in the local time zone. [...]
- DateTime.fromMicrosecondsSinceEpoch(int microsecondsSinceEpoch, {bool isUtc = false})
- Constructs a new DateTime instance with the given
microsecondsSinceEpoch
. [...] - DateTime.fromMillisecondsSinceEpoch(int millisecondsSinceEpoch, {bool isUtc = false})
- Constructs a new DateTime instance with the given
millisecondsSinceEpoch
. [...] - DateTime.now()
- Constructs a DateTime instance with current date and time in the local time zone. [...]
- DateTime.utc(int year, [int month = 1, int day = 1, int hour = 0, int minute = 0, int second = 0, int millisecond = 0, int microsecond = 0])
- Constructs a DateTime instance specified in the UTC time zone. [...]
Properties
- day → int read-only
- The day of the month
1..31
. [...] - hashCode → int read-only, override
- The hash code for this object. [...]
- hour → int read-only
- The hour of the day, expressed as in a 24-hour clock
0..23
. [...] - isUtc → bool final
- True if this DateTime is set to UTC time. [...]
- microsecond → int read-only
- The microsecond
0...999
. [...] - microsecondsSinceEpoch → int read-only
- The number of microseconds since the "Unix epoch" 1970-01-01T00:00:00Z (UTC). [...]
- millisecond → int read-only
- The millisecond
0...999
. [...] - millisecondsSinceEpoch → int read-only
- The number of milliseconds since the "Unix epoch" 1970-01-01T00:00:00Z (UTC). [...]
- minute → int read-only
- The minute
0...59
. [...] - month → int read-only
- The month
1..12
. [...] - runtimeType → Type read-only, inherited
- A representation of the runtime type of the object.
- second → int read-only
- The second
0...59
. [...] - timeZoneName → String read-only
- The time zone name. [...]
- timeZoneOffset → Duration read-only
- The time zone offset, which is the difference between local time and UTC. [...]
- weekday → int read-only
- The day of the week monday..sunday. [...]
- year → int read-only
- The year. [...]
Methods
- add(
Duration duration) → DateTime - Returns a new DateTime instance with
duration
added to this. [...] - compareTo(
DateTime other) → int override - Compares this DateTime object to
other
, returning zero if the values are equal. [...] - difference(
DateTime other) → Duration - Returns a Duration with the difference when subtracting
other
from this. [...] - isAfter(
DateTime other) → bool - Returns true if this occurs after
other
. [...] - isAtSameMomentAs(
DateTime other) → bool - Returns true if this occurs at the same moment as
other
. [...] - isBefore(
DateTime other) → bool - Returns true if this occurs before
other
. [...] - noSuchMethod(
Invocation invocation) → dynamic inherited - Invoked when a non-existent method or property is accessed. [...]
- subtract(
Duration duration) → DateTime - Returns a new DateTime instance with
duration
subtracted from this. [...] - toIso8601String(
) → String - Returns an ISO-8601 full-precision extended format representation. [...]
- toLocal(
) → DateTime - Returns this DateTime value in the local time zone. [...]
- toString(
) → String override - Returns a human-readable string for this instance. [...]
- toUtc(
) → DateTime - Returns this DateTime value in the UTC time zone. [...]
Operators
- operator ==(
Object other) → bool override - Returns true if
other
is a DateTime at the same moment and in the same time zone (UTC or local). [...]
Static Methods
- parse(
String formattedString) → DateTime - Constructs a new DateTime instance based on
formattedString
. [...] - tryParse(
String formattedString) → DateTime? - Constructs a new DateTime instance based on
formattedString
. [...]
Constants
- april → const int
-
4
- august → const int
-
8
- daysPerWeek → const int
-
7
- december → const int
-
12
- february → const int
-
2
- friday → const int
-
5
- january → const int
-
1
- july → const int
-
7
- june → const int
-
6
- march → const int
-
3
- may → const int
-
5
- monday → const int
-
1
- monthsPerYear → const int
-
12
- november → const int
-
11
- october → const int
-
10
- saturday → const int
-
6
- september → const int
-
9
- sunday → const int
-
7
- thursday → const int
-
4
- tuesday → const int
-
2
- wednesday → const int
-
3
© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dart.dev/stable/2.13.0/dart-core/DateTime-class.html