aves/lib/utils/time_utils.dart
Thibault Deckers 0dbb46d9bb const galore
2021-06-08 11:05:23 +09:00

31 lines
1.3 KiB
Dart

String formatFriendlyDuration(Duration d) {
final seconds = (d.inSeconds.remainder(Duration.secondsPerMinute)).toString().padLeft(2, '0');
if (d.inHours == 0) return '${d.inMinutes}:$seconds';
final minutes = (d.inMinutes.remainder(Duration.minutesPerHour)).toString().padLeft(2, '0');
return '${d.inHours}:$minutes:$seconds';
}
String formatPreciseDuration(Duration d) {
final millis = ((d.inMicroseconds / 1000.0).round() % 1000).toString().padLeft(3, '0');
final seconds = (d.inSeconds.remainder(Duration.secondsPerMinute)).toString().padLeft(2, '0');
final minutes = (d.inMinutes.remainder(Duration.minutesPerHour)).toString().padLeft(2, '0');
final hours = (d.inHours).toString().padLeft(2, '0');
return '$hours:$minutes:$seconds.$millis';
}
extension ExtraDateTime on DateTime {
bool isAtSameYearAs(DateTime? other) => year == other?.year;
bool isAtSameMonthAs(DateTime? other) => isAtSameYearAs(other) && month == other?.month;
bool isAtSameDayAs(DateTime? other) => isAtSameMonthAs(other) && day == other?.day;
bool get isToday => isAtSameDayAs(DateTime.now());
bool get isYesterday => isAtSameDayAs(DateTime.now().subtract(const Duration(days: 1)));
bool get isThisMonth => isAtSameMonthAs(DateTime.now());
bool get isThisYear => isAtSameYearAs(DateTime.now());
}