Класс DateTime
Момент времени, например 20 июля 1969 года, 20:18 по Гринвичу.
Объекты DateTime могут представлять значения времени, отстоящие от эпохи не более чем на 100 000 000 дней (1970-01-01 UTC): от -271821-04-20 до 275760-09-13.
Создайте объект DateTime с помощью одного из конструкторов или разбора правильно отформатированной строки, соответствующей подмножеству ISO 8601. Примечание: часы указываются в диапазоне от 0 до 23, как в 24-часовом формате.
Например:
final now = DateTime.now();
final berlinWallFell = DateTime.utc(1989, 11, 9);
final moonLanding = DateTime.parse('1969-07-20 20:18:04Z'); // 8:18pm Объект DateTime привязан либо к часовому поясу UTC, либо к местному часовому поясу компьютера, на котором он создаётся.
После создания ни значение, ни часовой пояс объекта DateTime изменить нельзя.
С помощью свойств можно получить отдельные единицы объекта DateTime.
print(berlinWallFell.year); // 1989 print(berlinWallFell.month); // 11 print(berlinWallFell.day); // 9 print(moonLanding.hour); // 20 print(moonLanding.minute); // 18
Для удобства и наглядности класс DateTime предоставляет константу для каждого названия day и month, например august и friday. Эти константы помогают сделать код более понятным:
final berlinWallFell = DateTime.utc(1989, DateTime.november, 9); print(DateTime.november); // 11 assert(berlinWallFell.month == DateTime.november); assert(berlinWallFell.weekday == DateTime.thursday);
Значения Day и month начинаются с 1, а неделя начинается с Monday. То есть константы january и monday равны 1.
Работа с UTC и местным временем
Объект DateTime относится к местному часовому поясу, если только он явно не создан в часовом поясе UTC. Используйте isUtc, чтобы определить, основан ли объект DateTime на UTC.
final dDay = DateTime.utc(1944, 6, 6); print(dDay.isUtc); // true final dDayLocal = DateTime(1944, 6, 6); print(dDayLocal.isUtc); // false
Используйте методы toLocal и toUtc, чтобы получить эквивалентное значение даты и времени, заданное в другом часовом поясе.
final localDay = dDay.toLocal(); // e.g. 1944-06-06 02:00:00.000 print(localDay.isUtc); // false final utcFromLocal = localDay.toUtc(); // 1944-06-06 00:00:00.000Z print(utcFromLocal.isUtc); // true
Используйте timeZoneName, чтобы получить сокращённое название часового пояса объекта DateTime.
print(dDay.timeZoneName); // UTC print(localDay.timeZoneName); // e.g. EET
Чтобы узнать разницу между UTC и часовым поясом объекта DateTime, вызовите timeZoneOffset.
print(dDay.timeZoneOffset); // 0:00:00.000000 print(localDay.timeZoneOffset); // e.g. 2:00:00.000000
Сравнение объектов DateTime
Класс DateTime содержит методы для хронологического сравнения объектов DateTime, такие как isAfter, isBefore и isAtSameMomentAs.
print(berlinWallFell.isAfter(moonLanding)); // true print(berlinWallFell.isBefore(moonLanding)); // false print(dDay.isAtSameMomentAs(localDay)); // true
Использование DateTime с Duration
Используйте методы add и subtract с объектом Duration, чтобы создать объект DateTime на основе другого. Например, чтобы найти момент времени через 36 часов от текущего, можно написать:
final now = DateTime.now(); final later = now.add(const Duration(hours: 36));
Чтобы узнать, сколько времени прошло между двумя объектами DateTime, используйте difference, который возвращает объект Duration:
final difference = berlinWallFell.difference(moonLanding); print(difference.inDays); // 7416
Разница между двумя датами в разных часовых поясах — это просто количество наносекунд между двумя моментами времени. При этом календарные дни не учитываются. Это значит, что разница между двумя полуночами по местному времени может быть меньше 24 часов, умноженных на число дней между ними, если за это время произошёл переход на летнее время. Если вычислить приведённую выше разницу для местного времени Австралии, она составит 7415 дней и 23 часа, то есть только 7415 полных дней согласно inDays.
Другие ресурсы
- См. Duration для представления промежутка времени.
- См. Stopwatch для измерения промежутков времени.
- Класс
DateTimeне предоставляет средств интернационализации. Для интернационализации кода используйте пакет intl.
- Реализуемые типы
- Доступные расширения
Конструкторы
- DateTime(int year, [int month = 1, int day = 1, int hour = 0, int minute = 0, int second = 0, int millisecond = 0, int microsecond = 0])
- Создаёт экземпляр DateTime, заданный в местном часовом поясе.
- DateTime.fromMicrosecondsSinceEpoch(int microsecondsSinceEpoch, {bool isUtc = false})
- Создаёт новый экземпляр DateTime с заданным
microsecondsSinceEpoch. - DateTime.fromMillisecondsSinceEpoch(int millisecondsSinceEpoch, {bool isUtc = false})
- Создаёт новый экземпляр DateTime с заданным
millisecondsSinceEpoch. - DateTime.now()
- Создаёт экземпляр DateTime с текущими датой и временем в местном часовом поясе.
- 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])
- Создаёт экземпляр DateTime, заданный в часовом поясе UTC.
Свойства
- day → int только чтение
- День месяца
[1..31]. - hashCode → int только чтениепереопределение
- Хеш-код этого объекта.
- hour → int только чтение
- Час дня в 24-часовом формате
[0..23]. - isUtc → bool фиксированное
- Истина, если для этого DateTime задано время UTC.
- microsecond → int только чтение
- Микросекунда
[0...999]. - microsecondsSinceEpoch → int только чтение
- Количество микросекунд, прошедших с «эпохи Unix» — 1970-01-01T00:00:00Z (UTC).
- millisecond → int только чтение
- Миллисекунда
[0...999]. - millisecondsSinceEpoch → int только чтение
- Количество миллисекунд, прошедших с «эпохи Unix» — 1970-01-01T00:00:00Z (UTC).
- minute → int только чтение
- Минута
[0...59]. - month → int только чтение
- Месяц
[1..12]. - runtimeType → Type только чтениеунаследовано
- Представление типа объекта во время выполнения.
- second → int только чтение
- Секунда
[0...59]. - timeZoneName → String только чтение
- Название часового пояса.
- timeZoneOffset → Duration только чтение
- Смещение часового пояса — разница между местным временем и UTC.
- weekday → int только чтение
- День недели: monday..sunday.
- year → int только чтение
- Год.
Методы
- add(
Duration duration) → DateTime - Возвращает новый экземпляр DateTime, в котором к this добавлено
duration. - compareTo(
DateTime other) → int переопределение - Сравнивает этот объект DateTime с
otherи возвращает ноль, если значения равны. - difference(
DateTime other) → Duration - Возвращает Duration с разницей, полученной при вычитании
otherиз this. - isAfter(
DateTime other) → bool - Возвращает true, если this наступает после
other. - isAtSameMomentAs(
DateTime other) → bool - Возвращает true, если this приходится на тот же момент, что и
other. - isBefore(
DateTime other) → bool - Возвращает true, если this наступает до
other. - noSuchMethod(
Invocation invocation) → dynamic унаследовано - Вызывается при обращении к несуществующему методу или свойству.
- subtract(
Duration duration) → DateTime - Возвращает новый экземпляр DateTime, из которого вычтено
duration. - toIso8601String(
) → String - Возвращает представление в расширенном формате ISO-8601 с полной точностью.
- toLocal(
) → DateTime - Возвращает значение DateTime в местном часовом поясе.
- toString(
) → String переопределение - Возвращает удобочитаемое строковое представление этого экземпляра.
- toUtc(
) → DateTime - Возвращает значение DateTime в часовом поясе UTC.
Операторы
- operator ==(
Object other) → bool переопределение - Возвращает true, если
otherявляется объектом DateTime для того же момента времени и того же часового пояса (UTC или местного).
Статические методы
- parse(
String formattedString) → DateTime - Создаёт новый экземпляр DateTime на основе
formattedString. - tryParse(
String formattedString) → DateTime? - Создаёт новый экземпляр DateTime на основе
formattedString.
Константы
- 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 BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-core/DateTime-class.html