toIso8601String method
Возвращает представление в расширенном формате ISO-8601 с полной точностью.
Для времени UTC используется формат yyyy-MM-ddTHH:mm:ss.mmmuuuZ, а для локального времени/времени не в UTC — yyyy-MM-ddTHH:mm:ss.mmmuuu (без завершающей «Z»), где:
-
yyyy— возможно, отрицательное четырёхзначное представление года, если год находится в диапазоне от -9999 до 9999; в противном случае используется знаковое шестизначное представление года. -
MM— месяц в диапазоне от 01 до 12, -
dd— день месяца в диапазоне от 01 до 31, -
HH— часы в диапазоне от 00 до 23, -
mm— минуты в диапазоне от 00 до 59, -
ss— секунды в диапазоне от 00 до 59 (без високосных секунд), -
mmm— миллисекунды в диапазоне от 000 до 999, а -
uuu— микросекунды в диапазоне от 001 до 999. Если значение microsecond равно 0, эта часть опускается.
Полученную строку можно преобразовать обратно с помощью parse.
final moonLanding = DateTime.utc(1969, 7, 20, 20, 18, 04); final isoDate = moonLanding.toIso8601String(); print(isoDate); // 1969-07-20T20:18:04.000Z
Реализация
String toIso8601String() {
String y =
(year >= -9999 && year <= 9999) ? _fourDigits(year) : _sixDigits(year);
String m = _twoDigits(month);
String d = _twoDigits(day);
String h = _twoDigits(hour);
String min = _twoDigits(minute);
String sec = _twoDigits(second);
String ms = _threeDigits(millisecond);
String us = microsecond == 0 ? "" : _threeDigits(microsecond);
if (isUtc) {
return "$y-$m-${d}T$h:$min:$sec.$ms${us}Z";
} else {
return "$y-$m-${d}T$h:$min:$sec.$ms$us";
}
}
© 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/toIso8601String.html