setTime(0, 0, 0); return $dateTime->getTimestamp(); } catch (\Throwable $exception) { return null; } } /** * Format Unix timestamp back to date string (YYYY-MM-DD). * * @param int $timestamp Unix timestamp * @return string Formatted date string */ public static function timestampToDate(int $timestamp): string { $timezone = DateTimeHelper::getWpTimezone(); $dateTime = new DateTimeImmutable('@' . $timestamp); $dateTime = $dateTime->setTimezone($timezone); return $dateTime->format('Y-m-d'); } /** * Format Unix timestamp to a custom date format. * * @param int $timestamp Unix timestamp * @param string $format PHP date format string * @return string Formatted date string */ public static function timestampToDateFormat(int $timestamp, string $format): string { $timezone = DateTimeHelper::getWpTimezone(); $dateTime = new DateTimeImmutable('@' . $timestamp); $dateTime = $dateTime->setTimezone($timezone); return $dateTime->format($format); } /** * Convert date string (YYYY-MM-DD or various formats) to Unix timestamp. * * @param mixed $value Date value (YYYY-MM-DD, or numeric timestamp) * @return int|null Unix timestamp or null if invalid */ private static function dateToTimestamp($value): ?int { if ($value === null || $value === '') { return null; } if (is_numeric($value)) { return (int) $value; } $dateString = trim((string) $value); return self::parseDateStringToTimestamp($dateString); } }