[wp-trac] [WordPress Trac] #57998: current_time function: GMT offset is not always an integer (was: Issue in current_time function)

WordPress Trac noreply at wordpress.org
Tue Mar 28 09:17:26 UTC 2023


#57998: current_time function: GMT offset is not always an integer
-------------------------------+------------------------------
 Reporter:  reputeinfosystems  |       Owner:  (none)
     Type:  defect (bug)       |      Status:  new
 Priority:  normal             |   Milestone:  Awaiting Review
Component:  Date/Time          |     Version:  trunk
 Severity:  normal             |  Resolution:
 Keywords:                     |     Focuses:
-------------------------------+------------------------------
Description changed by sabernhardt:

Old description:

> Hello,
>

>
> We found a bug in the WordPress 6.2 RC with the function 'current_time'
> located in 'wp-includes\functions.php'. Before 6.2 RC, the line under
> this function was like as below.
>

>
> {{{#!php
> <?php
>     return $gmt ? time() : time() + (int)( get_option( 'gmt_offset' ) *
> HOUR_IN_SECONDS );
> ?>
> }}}
>

>
> While in WordPress 6.2 RC, it gets changes and integer typecasting moved
> inside the brackets.
>

>
> {{{#!php
> <?php
>    return $gmt ? time() : time() + ( (int) get_option( 'gmt_offset' ) *
> HOUR_IN_SECONDS );
> ?>
> }}}
>

>
> This creates time difference when the site timezone is like '+11:30',
> '+05:30', etc. When we call the function with timestamp parameter
> {{{#!php
> <?php current_time('timestamp'); ?>
> }}}
>

>
> in WordPress 6.1.1 or lower, it returns me the gmt_offset 11.5 ( for
> +11:30 ), 5.5 ( for +05:30 ) and calculate properly without making any
> difference.
>

>
> While from WordPress 6.2, first it'll convert the gmt_offset to integer
> and that considers 30 minutes less then original. Before WordPress 6.2,
> the gmt_offset first converted into seconds and then it typecasted to
> integer but with 6.2 first it typecasting gmt_offset to integer and then
> converting to seconds so it makes the 30 minutes difference on above
> examples.
>

>
> We would suggest that if it's needed to type cast only gmt_offset (inside
> the bracket as per WordPress 6.2) then either use 'float' or 'double' so
> that the above timezone makes no difference and calculate proper
> timestamp.
>

>
> Suggested change:
>

>
> {{{#!php
> <?php
>     return $gmt ? time() : time() + ( (float) get_option( 'gmt_offset' )
> * HOUR_IN_SECONDS ); ?>
> ?>
> }}}
>

>
> Thanks

New description:

 Hello,

 We found a bug in the WordPress 6.2 RC with the function `current_time`
 located in `wp-includes\functions.php`. Before 6.2 RC, the line under this
 function was like as below.

 {{{#!php
 <?php
     return $gmt ? time() : time() + (int)( get_option( 'gmt_offset' ) *
 HOUR_IN_SECONDS );
 ?>
 }}}

 While in WordPress 6.2 RC, it gets changes and integer typecasting moved
 inside the brackets.

 {{{#!php
 <?php
     return $gmt ? time() : time() + ( (int) get_option( 'gmt_offset' ) *
 HOUR_IN_SECONDS );
 ?>
 }}}

 This creates time difference when the site timezone is like '+11:30',
 '+05:30', etc. When we call the function with timestamp parameter
 {{{#!php
 <?php current_time('timestamp'); ?>
 }}}

 in WordPress 6.1.1 or lower, it returns me the `gmt_offset` 11.5 ( for
 +11:30 ), 5.5 ( for +05:30 ) and calculate properly without making any
 difference.

 While from WordPress 6.2, first it'll convert the `gmt_offset` to integer
 and that considers 30 minutes less than original. Before WordPress 6.2,
 the `gmt_offset` first converted into seconds and then it typecasted to
 integer but with 6.2 first it typecasting `gmt_offset` to integer and then
 converting to seconds so it makes the 30 minutes difference on above
 examples.

 We would suggest that if it's needed to type cast only `gmt_offset`
 (inside the bracket as per WordPress 6.2) then either use `float` or
 `double` so that the above timezone makes no difference and calculate
 proper timestamp.

 Suggested change:

 {{{#!php
 <?php
     return $gmt ? time() : time() + ( (float) get_option( 'gmt_offset' ) *
 HOUR_IN_SECONDS );
 ?>
 }}}

 Thanks

--

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/57998#comment:2>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list