selfprivacy.org.app/lib/utils/extensions/duration.dart

27 lines
791 B
Dart
Raw Normal View History

2022-01-25 19:00:47 +02:00
// ignore_for_file: unnecessary_this
import 'dart:ui';
import 'package:duration/duration.dart';
import 'package:duration/locale.dart';
2022-01-25 19:00:47 +02:00
extension DurationFormatter on Duration {
String toTimezoneOffsetFormat() {
final designator = this >= Duration.zero ? '+' : '-';
2022-01-25 19:00:47 +02:00
final Iterable<String> segments = [
2022-01-25 19:00:47 +02:00
this.inHours.remainder(24).abs(),
this.inMinutes.remainder(60).abs(),
].map((final int seg) => seg.toString().padLeft(2, '0'));
2022-01-25 19:00:47 +02:00
return '$designator${segments.first}:${segments.last}';
}
String toPrettyString(final Locale locale) =>
prettyDuration(this, locale: getDurationLocale(locale));
2022-01-25 19:00:47 +02:00
}
DurationLocale getDurationLocale(final Locale locale) =>
DurationLocale.fromLanguageCode(locale.languageCode) ??
const EnglishDurationLocale();