| | |
| | | * Format a date in relative time (e.g., "2 days ago") |
| | | * @param string $dateStr - Date string or DateTime object |
| | | * @return string - Formatted relative time |
| | | * @throws DateMalformedStringException |
| | | */ |
| | | function jvbFormatTimeAgo(string $dateStr):string |
| | | { |
| | |
| | | /** |
| | | * Check if business is currently open based on stored hours |
| | | * |
| | | * @param array $hours_data Array of hours data from wp_option |
| | | * @param array|null $hours_data Array of hours data from wp_option |
| | | * @param string $timezone Timezone string (default: 'America/Edmonton') |
| | | * @return bool True if currently open, false if closed |
| | | * @throws DateInvalidTimeZoneException |
| | | * @throws DateMalformedStringException |
| | | */ |
| | | function jvbIsCurrentlyOpen(?array $hours_data = null, string $timezone = 'America/Edmonton'):bool |
| | | { |
| | |
| | | * @param ?string $end_time End time in H:i format (e.g., '15:15') |
| | | * @param string $timezone Timezone string (default: 'America/Edmonton') |
| | | * @return bool True if current time is within range, false otherwise |
| | | * @throws DateInvalidTimeZoneException |
| | | * @throws DateMalformedStringException |
| | | */ |
| | | function jvbIsTimeBetween(?string $start_time = null, ?string $end_time = null, string $timezone = 'America/Edmonton'):bool { |
| | | if (!$start_time && !$end_time) { |
| | |
| | | * @param string $timezone Timezone string |
| | | * @return string Next opening time description or empty string if never opens |
| | | * @throws DateInvalidTimeZoneException |
| | | * @throws DateMalformedStringException |
| | | */ |
| | | function jvbGetNextOpeningTime(array $hours_data, string $timezone = 'America/Edmonton'):string { |
| | | if (!jvbHasOperatingHours($hours_data)) { |