• File: date-time.php
  • Full Path: /home/matthif/www/wp-content/plugins/wpforms-lite/includes/functions/date-time.php
  • Date Modified: 02/16/2024 11:45 AM
  • File size: 3.6 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php
/**
 * Helper functions to work with dates, time and timezones.
 *
 * @since 1.8.0
 */

/**
 * Return date and time formatted as expected.
 *
 * @since 1.6.3
 *
 * @param string|int $date       Date to format.
 * @param string     $format     Optional. Format for the date and time.
 * @param bool       $gmt_offset Optional. GTM offset.
 *
 * @return string
 */
function wpforms_datetime_format$date$format ''$gmt_offset false ) {

    if ( 
is_numeric$date ) ) {
        
$date = (int) $date;
    }

    if ( 
is_string$date ) ) {
        
$date strtotime$date );
    }

    if ( 
$gmt_offset ) {
        
$date += (int) ( get_option'gmt_offset' ) * HOUR_IN_SECONDS );
    }

    if ( 
$format === '' ) {
        return 
sprintf/* translators: %1$s - formatted date, %2$s - formatted time. */
            
__'%1$s at %2$s''wpforms-lite' ),
            
date_i18nget_option'date_format' ), $date ),
            
date_i18nget_option'time_format' ), $date )
        );
    }

    return 
date_i18n$format$date );
}

/**
 * Return date formatted as expected.
 *
 * @since 1.6.3
 *
 * @param string|int $date       Date to format.
 * @param string     $format     Optional. Format for the date.
 * @param bool       $gmt_offset Optional. GTM offset.
 *
 * @return string
 */
function wpforms_date_format$date$format ''$gmt_offset false ) {

    if ( 
$format === '' ) {
        
$format = (string) get_option'date_format''M j, Y' );
    }

    return 
wpforms_datetime_format$date$format$gmt_offset );
}

/**
 * Return time formatted as expected.
 *
 * @since 1.8.5
 *
 * @param string|int $date       Date to format.
 * @param string     $format     Optional. Format for the time.
 * @param bool       $gmt_offset Optional. GTM offset.
 *
 * @return string
 */
function wpforms_time_format$date$format ''$gmt_offset false ) {

    if ( 
$format === '' ) {
        
$format = (string) get_option'time_format''g:ia' );
    }

    return 
wpforms_datetime_format$date$format$gmt_offset );
}

/**
 * Get the certain date of a specified day in a specified format.
 *
 * @since 1.4.4
 * @since 1.6.3 Added $use_gmt_offset parameter.
 *
 * @param string $period         Supported values: start, end.
 * @param string $timestamp      Default is the current timestamp, if left empty.
 * @param string $format         Default is a MySQL format.
 * @param bool   $use_gmt_offset Use GTM offset.
 *
 * @return string
 */
function wpforms_get_day_period_date$period$timestamp ''$format 'Y-m-d H:i:s'$use_gmt_offset false ) {

    
$date '';

    if ( empty( 
$timestamp ) ) {
        
$timestamp time();
    }

    
$offset_sec $use_gmt_offset get_option'gmt_offset' ) * 3600 0;

    switch ( 
$period ) {
        case 
'start_of_day':
            
$date gmdate$formatstrtotime'today'$timestamp ) - $offset_sec );
            break;

        case 
'end_of_day':
            
$date gmdate$formatstrtotime'tomorrow'$timestamp ) - $offset_sec );
            break;
    }

    return 
$date;
}

/**
 * Retrieve a timezone from the site settings as a `DateTimeZone` object.
 *
 * Timezone can be based on a PHP timezone string or a ±HH:MM offset.
 *
 * @since 1.6.6
 *
 * @return DateTimeZone Timezone object.
 */
function wpforms_get_timezone() {

    if ( 
function_exists'wp_timezone' ) ) {
        return 
wp_timezone();
    }

    
// Fallback for WordPress version < 5.3.
    
$timezone_string get_option'timezone_string' );

    if ( ! 
$timezone_string ) {
        
$offset  = (float) get_option'gmt_offset' );
        
$hours   = (int) $offset;
        
$minutes = ( $offset $hours );

        
$sign     = ( $offset ) ? '-' '+';
        
$abs_hour abs$hours );
        
$abs_mins abs$minutes 60 );

        
$timezone_string sprintf'%s%02d:%02d'$sign$abs_hour$abs_mins );
    }

    return 
timezone_open$timezone_string );
}