refactor: normalize date handling to Tehran timezone
- Updated date handling in BlogSeoFields and ScheduleSection to use Tehran timezone utilities for consistency. - Introduced `toTehranClockTime`, `tehranWallClockToUnix`, and `todayIso` functions for accurate date representation. - Modified various components to utilize these new utilities, ensuring that date strings are correctly formatted and timestamps are accurately converted. - Enhanced API documentation to clarify the handling of date fields, emphasizing the importance of server-local midnight. - Added tests to verify that date overrides and holidays maintain the correct day without shifting due to timezone discrepancies.
This commit is contained in:
@@ -91,6 +91,9 @@ class DateOverride
|
||||
'clinic_uuid' => $this->clinic?->getUuid(),
|
||||
'context' => $this->clinic === null ? 'personal' : 'clinic',
|
||||
'date' => $this->date,
|
||||
// نمایش تاریخ باید از این رشته خوانده شود؛ تبدیل timestamp در مرورگر
|
||||
// با UTC انجام میشود و برای نیمهشبِ تهران یک روز عقب میافتد.
|
||||
'date_string' => date('Y-m-d', $this->date),
|
||||
'active' => $this->active,
|
||||
'reason' => $this->reason,
|
||||
'custom_slots' => $this->setting ?? [],
|
||||
|
||||
@@ -90,6 +90,10 @@ class Holiday
|
||||
'scope' => $this->clinic === null ? 'global' : 'clinic',
|
||||
'start_date' => $this->startDate,
|
||||
'end_date' => $this->endDate,
|
||||
// نمایش تاریخ باید از این رشتهها خوانده شود؛ تبدیل timestamp در مرورگر
|
||||
// با UTC انجام میشود و برای نیمهشبِ تهران یک روز عقب میافتد.
|
||||
'start_date_string' => date('Y-m-d', $this->startDate),
|
||||
'end_date_string' => date('Y-m-d', $this->endDate),
|
||||
'active' => $this->active,
|
||||
'reason' => $this->reason,
|
||||
'created_at' => $this->createdAt,
|
||||
|
||||
Reference in New Issue
Block a user