mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-08 17:06:15 -08:00
refactor: refactor date handling across components to use date-fns and Intl.DateTimeFormat
- Replaced moment.js usage with Intl.DateTimeFormat for date formatting in various components. - Introduced utility functions `normalizeDateLocale` and `formatWithIntl` for locale normalization and date formatting. - Updated PlaylistSwitcher, RecentPlaylists, ContentCard, EPG components, and MultiEpgContainer to utilize the new date formatting approach. - Removed moment-date pipe and related tests, simplifying date handling logic. - Ensured all date displays respect the current locale settings. Entire-Checkpoint: 271bd0162027
This commit is contained in:
1 parent
d3e30056f6
commit
c97673b928
29 files changed
+410
-247
No files matched your search
@@ -0,0 +1,25 @@
|
||||
# Date Handling
|
||||
|
||||
## Rules
|
||||
|
||||
- Use native `Date`, ISO strings, and epoch timestamps as the stored/runtime values.
|
||||
- Use `date-fns` for parsing, arithmetic, and normalization logic.
|
||||
- Use Angular `DatePipe` in templates when the value is already a `Date`, ISO string, or epoch timestamp.
|
||||
- Use cached `Intl.DateTimeFormat` helpers in TypeScript-only formatting paths where Angular pipes are not available.
|
||||
- Do not add new `moment` usage. The app no longer depends on it.
|
||||
|
||||
## Locale Strategy
|
||||
|
||||
- Date display should follow the user-selected app language from `TranslateService`.
|
||||
- When a template renders localized month or weekday names, pass the normalized app locale explicitly to `DatePipe`.
|
||||
- Angular locale data is registered in [apps/web/src/app/app-date-locales.ts](/Users/4gray/Code/iptvnator/apps/web/src/app/app-date-locales.ts).
|
||||
- App language aliases are normalized in [libs/ui/pipes/src/lib/date-format.util.ts](/Users/4gray/Code/iptvnator/libs/ui/pipes/src/lib/date-format.util.ts):
|
||||
- `ary` -> `ar-MA`
|
||||
- `by` -> `be`
|
||||
- `zhtw` -> `zh-Hant`
|
||||
|
||||
## Parsing Boundaries
|
||||
|
||||
- Normalize provider-specific or legacy date strings to ISO as early as possible.
|
||||
- Keep optional epoch fields such as `startTimestamp` and `stopTimestamp` when the provider already supplies them.
|
||||
- Avoid new non-standard `Date.parse(...)` usage for provider formats; prefer explicit `date-fns` parsing when the input is not ISO.
|
||||
Reference in new issue
Block a user