bharat_erp/lib/core/utils/formatters.dart

61 lines
1.7 KiB
Dart

import 'package:intl/intl.dart';
class DateFormatter {
DateFormatter._();
/// Application-wide display format: DD/MM/YYYY
static const displayDatePattern = 'dd/MM/yyyy';
static const displayDateTimePattern = 'dd/MM/yyyy, hh:mm a';
static final _dateFormat = DateFormat(displayDatePattern);
static final _dateTimeFormat = DateFormat(displayDateTimePattern);
static final _apiDateFormat = DateFormat('yyyy-MM-dd');
static String displayDate(DateTime? date) {
if (date == null) return '-';
return _dateFormat.format(date.toLocal());
}
static String displayDateTime(DateTime? date) {
if (date == null) return '-';
return _dateTimeFormat.format(date.toLocal());
}
static String toApiDate(DateTime date) => _apiDateFormat.format(date);
static DateTime? parseApiDate(String? value) {
if (value == null || value.isEmpty) return null;
return DateTime.tryParse(value);
}
static String formatUserLastLogin(DateTime? value) {
if (value == null) return '';
final local = value.toLocal();
final now = DateTime.now();
final today = DateTime(now.year, now.month, now.day);
final date = DateTime(local.year, local.month, local.day);
final dayDiff = today.difference(date).inDays;
final time = DateFormat('hh:mm a').format(local);
if (dayDiff == 0) return 'Today $time';
if (dayDiff == 1) return 'Yesterday';
if (dayDiff < 7) return '$dayDiff days ago';
return displayDateTime(local);
}
}
class CurrencyFormatter {
CurrencyFormatter._();
static final _formatter = NumberFormat.currency(
locale: 'en_IN',
symbol: '',
decimalDigits: 2,
);
static String format(double? amount) {
if (amount == null) return '-';
return _formatter.format(amount);
}
}