Класс DateTime
Класс DateTime используется для идентификации узла мгновенного времени, а объект времени может быть создан из строки в стандартном формате (в соответствии со стандартом ISO 8601) через конструктор. DateTIme использует 24-часовой хронометраж. Вот самый простой пример:
var now = new DateTime.now();
var berlinWallFell = new DateTime.utc(1989, 11, 9);
var moonLanding = DateTime.parse("1969-07-20 20:18:04Z"); // 8:18pm
Объекты DateTime привязаны к часовому поясу UTC (универсальное скоординированное время) или к местному часовому поясу устройства. После создания ни значение DateTime, ни часовой пояс, к которому он принадлежит, не изменятся. Конкретные значения времени можно прочитать через свойства объекта:
assert(berlinWallFell.month == 11); // 柏林墙倒塌的月份
assert(moonLanding.hour == 20); // 登月时的时间(小时)
Для удобства и читабельности класс DateTIme предоставляет константные значения недели и месяца для вызова.Можно использовать множество констант для улучшения читаемости кода.Примеры следующие:
var berlinWallFell = new DateTime.utc(1989, DateTime.november, 9);
assert(berlinWallFell.weekday == DateTime.thursday);
Константы недели и месяца отсчитываются от 1, а начало недели рассчитывается с понедельника, поэтому значения января и понедельника равны 1.
Метод строительства
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 })
Этот метод вводит количество микросекунд с 1 января 1970 года 0:0:0:0 и получает экземпляр DateTime.
DateTime.fromMillisecondsSinceEpoch(int millisecondsSinceEpoch, { bool isUtc: false })
Этот метод вводит количество миллисекунд с 1 января 1970 года, 0:0:0:0 секунд, и получает экземпляр DateTime.
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.
метод экземпляра
add(Duration duration) → DateTime
Добавьте временной интервал, представленный входящим экземпляром Duration, и верните новый экземпляр DateTime, разница во времени между новым экземпляром и вызывающим экземпляром равна продолжительности
var now = DateTime.now();
var span = Duration(days: 1);
print(now);
print(now.add(span));
выход:
2019-12-15 09:29:59.605510
2019-12-16 09:29:59.605510
compareTo(DateTime other) → int
Сравнивает два экземпляра DateTime и возвращает 0, если они равны
difference(DateTime other) → Duration
Возвращает разницу во времени между текущим экземпляром и входящим экземпляром, возвращая экземпляр Duration.
isAfter(DateTime other) → bool
Сравните с переданным в DateTime и верните true, если идентифицированное время после переданного экземпляра
isAtSameMomentAs(DateTime other) → bool
Сравните с входящим DateTime и верните true, если время, представленное двумя, совпадает
isBefore(DateTime other) → bool
Сравните с переданным в DateTime и верните true, если идентифицированное время предшествует переданному экземпляру.
subtract(Duration duration) → DateTime
Вычтите временной интервал, представленный входящим экземпляром Duration, и верните новый экземпляр DateTime, разница во времени между новым экземпляром и вызывающим экземпляром — это продолжительность
var now = DateTime.now();
var span = Duration(days: 1);
print(now);
print(now.subtract(span));
выход:
2019-12-15 09:32:02.811829
2019-12-14 09:32:02.811829
toIso8601String() → String
Возвращает формат времени в точном представлении в соответствии со стандартом IOS-8601.
toLocal() → DateTime
Возвращает экземпляр, представленный этим экземпляром в местном часовом поясе
toString() → String
возвращает строковое представление этого экземпляра
toUtc() → DateTime
Возвращает экземпляр этого экземпляра в представлении времени UTC.
оператор
operator ==(dynamic other) → bool
Возвращает true только в том случае, если переданное значение является экземпляром DateTime, а представленное время совпадает и находится в том же часовом поясе.
статический метод
parse(String formattedString) → DateTime
Создайте экземпляр DateTime из строки стандартного формата
var now = DateTime.parse('2019-12-12');
print(now);
выход:
2019-12-12 00:00:00.000
tryParse(String formattedString) → DateTime
Создайте экземпляр DateTime из строки стандартного формата
свойства экземпляра
day → int
Возвращает дату экземпляра в диапазоне от 1 до 30.
hashCode → int
Возвращает хэш-код экземпляра объекта
hour → int
Возвращает час в 24-часовом формате, в диапазоне от 0 до 23.
isUtc → bool
Возвращает, находится ли текущий экземпляр во времени UTC
microsecond
Возвращает последние три цифры количества микросекунд с 1 января 1970 г., 0:0:0:0 секунд от времени, представленного экземпляром, в диапазоне от 0 до 999.
microsecondsSinceEpoch → int
Возвращает количество микросекунд с 1 января 1970 г. 0:0:00 секунд от времени, представленного экземпляром
millisecond → int
Возвращает последние три цифры количества миллисекунд с 1 января 1970 г., 0:0:0:0 секунд от времени, представленного экземпляром, в диапазоне от 0 до 999.
millisecondsSinceEpoch → int
Возвращает количество миллисекунд с 1 января 1970 г. 0:0:00 секунд от времени, представленного экземпляром
minute → int
Возвращает количество минут, в которых экземпляр представляет время, в диапазоне от 0 до 59.
month → int
Возвращает месяц, в котором экземпляр представляет время, в диапазоне от 1 до 12.second → int
Возвращает месяц, в котором экземпляр представляет время, в диапазоне от 0 до 59.
timeZoneName → String
Возвращает имя часового пояса экземпляраtimeZoneOffset → Duration
Возвращает временной интервал между текущим временем и часовым поясом UTC, представленным объектом Duration.
weekday → int
Возвращаемый экземпляр указывает день недели, а значение находится в диапазоне от 1 до 7.year → int
Возвращает год, в котором экземпляр представляет время
Использовать часовой пояс UTC и местный часовой пояс
Экземпляры DateTime по умолчанию используют локальный часовой пояс, если при создании явно не указано использование часового пояса UTC.
var dDay = new DateTime.utc(1944, 6, 6);
можно использоватьisUtc
чтобы определить, находится ли текущее время в часовом поясе UTC. можно использоватьtoLocal
а такжеtoUtc
Чтобы выполнить преобразование временных интервалов, используйтеtimeZoneName
timeZoneOffset
чтобы получить разницу во времени между разными часовыми поясами.
Сравнение примеров DateTime
Класс DateTime имеет несколько простых методов для реализации сравнений между экземплярами DateTime, напримерisAfter
,isBefore
,isAtSameMomentAs
:
assert(berlinWallFell.isAfter(moonLanding) == true);
assert(berlinWallFell.isBefore(moonLanding) == false);
Использование класса DateTime и Duration
в состоянии пройтиadd
а такжеsubtract
Метод добавляет или вычитает объект Duration для работы с экземпляром DateTime и возвращает новый экземпляр. Например, чтобы рассчитать сегодняшнее время за шесть дней:
var now = new DateTime.now();
var sixtyDaysFromNow = now.add(new Duration(days: 60));
Чтобы найти разницу между двумя экземплярами DateTime, мы можем использоватьdifference
Метод, возвращающий экземпляр Duration:
var difference = berlinWallFell.difference(moonLanding);
assert(difference.inDays == 7416);
Разница во времени между двумя разными часовыми поясами составляет наносекунды между двумя местами, и этот результат не компенсирует разницу между календарными днями или системами времени. Это означает, что если две полуночи подряд пересекают дату перехода на летнее время, разница во времени между двумя полуночами может быть менее 24 часов. Если разница во времени в приведенном выше коде рассчитывается по местному времени Австралии, то результат будет 7415 дней и 23 часа, что составляет всего 7415 дней в полных днях.
Другие источники
О методе представления промежутка времени см.Duration
, для представления временного интервала см.Stopwatch
, класс DateTime не предоставляет функций, связанных с интернационализацией. Для интернационализации вы можете использоватьintl
Мешок.
постоянный
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
Чистый ручной перевод, спасибо за вашу поддержку!