32 lines
1.0 KiB
Dart
32 lines
1.0 KiB
Dart
import 'package:intl/intl.dart';
|
|
|
|
/// Label rentang periode ringkas, contoh: "27 Jul - 2 Agu 2026".
|
|
String formatPeriodLabel(DateTime from, DateTime to) {
|
|
final dayMonth = DateFormat('d MMM', 'id_ID');
|
|
final dayMonthYear = DateFormat('d MMM yyyy', 'id_ID');
|
|
|
|
if (from.year == to.year && from.month == to.month && from.day == to.day) {
|
|
return dayMonthYear.format(from);
|
|
}
|
|
if (from.year == to.year) {
|
|
return '${dayMonth.format(from)} - ${dayMonthYear.format(to)}';
|
|
}
|
|
return '${dayMonthYear.format(from)} - ${dayMonthYear.format(to)}';
|
|
}
|
|
|
|
/// Label bulan dari format API "2026-08" menjadi "Agustus 2026".
|
|
String formatMonthLabel(String month, DateTime fallback) {
|
|
final parts = month.split('-');
|
|
if (parts.length == 2) {
|
|
final year = int.tryParse(parts[0]);
|
|
final monthNumber = int.tryParse(parts[1]);
|
|
if (year != null && monthNumber != null) {
|
|
return DateFormat(
|
|
'MMMM yyyy',
|
|
'id_ID',
|
|
).format(DateTime(year, monthNumber));
|
|
}
|
|
}
|
|
return DateFormat('MMMM yyyy', 'id_ID').format(fallback);
|
|
}
|