77 lines
2.1 KiB
Dart
77 lines
2.1 KiB
Dart
import 'package:easy_localization/easy_localization.dart';
|
|
import 'package:flutter/widgets.dart';
|
|
import 'package:relative_time/relative_time.dart';
|
|
|
|
extension DurationFormatter on Duration {
|
|
String formatDuration() {
|
|
final isNegative = inMicroseconds < 0;
|
|
final positiveDuration = isNegative ? -this : this;
|
|
|
|
final hours = positiveDuration.inHours.toString().padLeft(2, '0');
|
|
final minutes = (positiveDuration.inMinutes % 60).toString().padLeft(
|
|
2,
|
|
'0',
|
|
);
|
|
final seconds = (positiveDuration.inSeconds % 60).toString().padLeft(
|
|
2,
|
|
'0',
|
|
);
|
|
|
|
return '${isNegative ? '-' : ''}$hours:$minutes:$seconds';
|
|
}
|
|
|
|
String formatOffset() {
|
|
final isNegative = inMicroseconds < 0;
|
|
final positiveDuration = isNegative ? -this : this;
|
|
|
|
final hours = positiveDuration.inHours.toString().padLeft(2, '0');
|
|
final minutes = (positiveDuration.inMinutes % 60).toString().padLeft(
|
|
2,
|
|
'0',
|
|
);
|
|
|
|
return '${isNegative ? '-' : '+'}$hours:$minutes';
|
|
}
|
|
|
|
String formatOffsetLocal() {
|
|
// Get the local timezone offset
|
|
final localOffset = DateTime.now().timeZoneOffset;
|
|
|
|
// Add the local offset to the input duration
|
|
final totalOffset = this - localOffset;
|
|
|
|
final isNegative = totalOffset.inMicroseconds < 0;
|
|
final positiveDuration = isNegative ? -totalOffset : totalOffset;
|
|
|
|
final hours = positiveDuration.inHours.toString().padLeft(2, '0');
|
|
final minutes = (positiveDuration.inMinutes % 60).toString().padLeft(
|
|
2,
|
|
'0',
|
|
);
|
|
|
|
return '${isNegative ? '-' : '+'}$hours:$minutes';
|
|
}
|
|
}
|
|
|
|
extension DateTimeFormatter on DateTime {
|
|
String formatSystem() {
|
|
return DateFormat.yMd().add_jm().format(toLocal());
|
|
}
|
|
|
|
String formatCustom(String pattern) {
|
|
return DateFormat(pattern).format(toLocal());
|
|
}
|
|
|
|
String formatCustomGlobal(String pattern) {
|
|
return DateFormat(pattern).format(this);
|
|
}
|
|
|
|
String formatWithLocale(String locale) {
|
|
return DateFormat.yMd().add_jm().format(toLocal()).toString();
|
|
}
|
|
|
|
String formatRelative(BuildContext context) {
|
|
return RelativeTime(context).format(toLocal());
|
|
}
|
|
}
|