Format user-visible dates as dd MMM yyyy #24

Closed
opened 2026-06-28 13:41:13 +00:00 by admin · 0 comments
Owner

Enhancement

All dates in the UI currently render in ISO format (yyyy-MM-dd, e.g. 2026-06-28) because they use DateTimeFormatter.ISO_LOCAL_DATE.

Locations

  • app/src/main/java/dev/achmad/ledgerr/ui/components/DateField.kt:35 — date input in Add/Edit screens
  • app/src/main/java/dev/achmad/ledgerr/ui/screens/home/HomeScreen.kt:466 — date shown in the Home dashboard list
  • app/src/main/java/dev/achmad/ledgerr/ui/screens/expenses/ExpenseListScreen.kt:374 — date shown per expense row
  • app/src/main/java/dev/achmad/ledgerr/ui/screens/expenses/ExpenseListScreen.kt:421nextDueDate shown per recurring row
  • app/src/main/java/dev/achmad/ledgerr/ui/components/ExportAction.kt:173 — date shown in the export-range preview (the filename on line 101 should stay ISO-safe; that's a filename, not a UI label)

Expected format

dd MMM yyyy, e.g. 28 Jun 2026. MMM is the short month name and should be localized via the default Locale, so users in other locales see e.g. 28 juin 2026 etc.

Acceptance criteria

  • A single, reusable formatter is used everywhere a date is displayed to the user (suggest app/src/main/java/dev/achmad/ledgerr/ui/util/StringUtil.kt, which already defines timeFormatter).
  • The pattern is dd MMM yyyy with Locale.getDefault() so the month name is localized.
  • CSV filename ledgerr-export-{date}.csv and any internal/timestamp values continue to use ISO_LOCAL_DATE — only user-visible dates change.
**Enhancement** All dates in the UI currently render in ISO format (`yyyy-MM-dd`, e.g. `2026-06-28`) because they use `DateTimeFormatter.ISO_LOCAL_DATE`. **Locations** - `app/src/main/java/dev/achmad/ledgerr/ui/components/DateField.kt:35` — date input in Add/Edit screens - `app/src/main/java/dev/achmad/ledgerr/ui/screens/home/HomeScreen.kt:466` — date shown in the Home dashboard list - `app/src/main/java/dev/achmad/ledgerr/ui/screens/expenses/ExpenseListScreen.kt:374` — date shown per expense row - `app/src/main/java/dev/achmad/ledgerr/ui/screens/expenses/ExpenseListScreen.kt:421` — `nextDueDate` shown per recurring row - `app/src/main/java/dev/achmad/ledgerr/ui/components/ExportAction.kt:173` — date shown in the export-range preview (the filename on line 101 should stay ISO-safe; that's a filename, not a UI label) **Expected format** `dd MMM yyyy`, e.g. `28 Jun 2026`. `MMM` is the short month name and should be localized via the default `Locale`, so users in other locales see e.g. `28 juin 2026` etc. **Acceptance criteria** - A single, reusable formatter is used everywhere a date is displayed to the user (suggest `app/src/main/java/dev/achmad/ledgerr/ui/util/StringUtil.kt`, which already defines `timeFormatter`). - The pattern is `dd MMM yyyy` with `Locale.getDefault()` so the month name is localized. - CSV filename `ledgerr-export-{date}.csv` and any internal/timestamp values continue to use `ISO_LOCAL_DATE` — only **user-visible** dates change.
admin closed this issue 2026-06-28 14:32:57 +00:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: admin/ledgerr#24