Класс 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 — например, август и пятница. Вы можете использовать эти константы для улучшения читабельности кода:
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. То есть, константы январь и понедельник обе равны 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 final
- True, если этот 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 только для чтения
- День недели понедельник..воскресенье.
- year → int только для чтения
- Год.
Методы
- add(
Duration duration) → DateTime - Возвращает новый экземпляр DateTime с добавленным к этому
duration. - compareTo(
DateTime other) → int override - Сравнивает этот объект DateTime с
other, возвращая ноль, если значения равны. - difference(
DateTime other) → Duration - Возвращает Duration с разницей при вычитании
otherиз этого. - isAfter(
DateTime other) → bool - Возвращает true, если этот момент времени следует за
other. - isAtSameMomentAs(
DateTime other) → bool - Возвращает true, если этот момент времени совпадает с моментом
other. - isBefore(
DateTime other) → bool - Возвращает true, если этот момент времени предшествует
other. - noSuchMethod(
Invocation invocation) → dynamic inherited - Вызывается при попытке доступа к несуществующему методу или свойству.
- subtract(
Duration duration) → DateTime - Возвращает новый экземпляр DateTime с вычтенным из этого
duration. - toIso8601String(
) → String - Возвращает представление в полном формате расширенного формата ISO-8601.
- toLocal(
) → DateTime - Возвращает это значение DateTime в местном часовом поясе.
- toString(
) → String override - Возвращает удобочитаемую строку для этого экземпляра.
- toUtc(
) → DateTime - Возвращает это значение DateTime в часовом поясе UTC.
Операторы
- operator ==(
Object other) → bool override - Возвращает 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.18.5/dart-core/DateTime-class.html