31 lines
1.3 KiB
Dart
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());
|
|
}
|