Make WordPress Core

Ticket #34835: Added_numeric_time_zone_offset_support_to_date_i18n.patch

File Added_numeric_time_zone_offset_support_to_date_i18n.patch, 1.4 KB (added by Rarst, 7 years ago)

Implements correct output for numeric offsets, without going through time zone object.

  • wp-includes/functions.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    132132                                        $dateformatstring = substr( $dateformatstring, 1, strlen( $dateformatstring ) -1 );
    133133                                }
    134134                        }
     135                } else {
     136                        $offset = get_option( 'gmt_offset' );
     137                        foreach ( $timezone_formats as $timezone_format ) {
     138                                if ( false !== strpos( $dateformatstring, $timezone_format ) ) {
     139                                        if ( 'Z' === $timezone_format ) {
     140                                                $formatted = (string) ( $offset * HOUR_IN_SECONDS );
     141                                        } else {
     142                                                $prefix    = '';
     143                                                $hours     = (int) $offset;
     144                                                $separator = '';
     145                                                $minutes   = abs( ( $offset - $hours ) * 60 );
     146
     147                                                if ( 'T' === $timezone_format ) {
     148                                                        $prefix = 'GMT';
     149                                                } elseif ( 'e' === $timezone_format || 'P' === $timezone_format ) {
     150                                                        $separator = ':';
     151                                                }
     152
     153                                                $formatted = sprintf( '%s%+03d%s%02d', $prefix, $hours, $separator, $minutes );
     154                                        }
     155
     156                                        $dateformatstring = ' ' . $dateformatstring;
     157                                        $dateformatstring = preg_replace( "/([^\\\])$timezone_format/", "\\1" . backslashit( $formatted ), $dateformatstring );
     158                                        $dateformatstring = substr( $dateformatstring, 1 );
     159                                }
     160                        }
    135161                }
    136162        }
    137163        $j = @date( $dateformatstring, $i );