34 lines
1.3 KiB
Dart
34 lines
1.3 KiB
Dart
import 'package:aves/theme/text.dart';
|
|
import 'package:intl/intl.dart';
|
|
|
|
String formatDay(DateTime date, String locale) => DateFormat.yMMMd(locale).format(date);
|
|
|
|
String formatTime(DateTime date, String locale, bool use24hour) => (use24hour ? DateFormat.Hm(locale) : DateFormat.jm(locale)).format(date);
|
|
|
|
String formatDateTime(DateTime date, String locale, bool use24hour) => [
|
|
formatDay(date, locale),
|
|
formatTime(date, locale, use24hour),
|
|
].join(AText.separator);
|
|
|
|
String formatFriendlyDuration(Duration d) {
|
|
final isNegative = d.isNegative;
|
|
final sign = isNegative ? '-' : '';
|
|
d = d.abs();
|
|
final hours = d.inHours;
|
|
d -= Duration(hours: hours);
|
|
final minutes = d.inMinutes;
|
|
d -= Duration(minutes: minutes);
|
|
final seconds = d.inSeconds;
|
|
|
|
if (hours == 0) return '$sign$minutes:${seconds.toString().padLeft(2, '0')}';
|
|
|
|
return '$sign$hours:${minutes.toString().padLeft(2, '0')}:${seconds.toString().padLeft(2, '0')}';
|
|
}
|
|
|
|
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';
|
|
}
|