Spec-Zone.ru › Dart 2

dart:core

Класс 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.
Реализуемые типы
  • Comparable<DateTime>
Доступные расширения
  • DateTimeCopyWith

Конструкторы

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API