utc()); } /** Календарный день срока в данном поясе, Y-m-d. */ public function dayFor(string $tz): string { return match ($this->mode) { DueMode::Local => $this->date, DueMode::Fixed => $this->instant->setTimezone($tz)->format('Y-m-d'), }; } public function equals(Event $event): bool { if ($event->due_mode !== $this->mode) { return false; } return match ($this->mode) { DueMode::Local => $event->due_date->format('Y-m-d') === $this->date && $event->due_time === $this->time, DueMode::Fixed => $event->due_instant->eq($this->instant), }; } /** @return array колонки events */ public function columns(): array { return [ 'due_mode' => $this->mode, 'due_date' => $this->date, 'due_time' => $this->time, 'due_instant' => $this->instant, ]; } }