[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