Вы можете использовать DateTime
функции.
http://php.net/manual/ro/datetime.settimezone.php
Ваш код может быть примерно таким:
date_default_timezone_set('America/Los_Angeles');
$users = get_users();
foreach( $users as $user ) {
$udata = get_userdata( $user->ID );
$registered = $udata->user_registered;
$date = new DateTime(date( "Y-m-d H:i:s", strtotime( $registered )), new DateTimeZone('UTC')); //replace UTC with whatever is the timezone that the data was stored in
$date->setTimezone(new DateTimeZone('America/Los_Angeles'));
printf( '%s member since %s<br>', $udata->data->display_name, $date->format('Y-m-d H:i:s') );
}
echo('date below <br>');
echo date('Y-m-d H:i:s');
РЕДАКТИРОВАТЬ : преобразование часового пояса подразумевает, что указан исходный часовой пояс и целевой часовой пояс. Так что в этом случае
date_default_timezone_set('America/Los_Angeles');
указывает целевой часовой пояс. Но вам все равно нужно указать исходный часовой пояс для значений, извлеченных из БД. WP имеет встроенную функцию, которая получает часовой пояс
get_option('timezone_string')
Таким образом, в исходном примере вы можете использовать более простой подход, просто указав исходный часовой пояс в функции strtotime()
.
date_default_timezone_set('America/Los_Angeles');
$users = get_users();
foreach( $users as $user ) {
$udata = get_userdata( $user->ID );
$registered = $udata->user_registered;
printf( '%s member since %s<br>', $udata->data->display_name, date( "Y-m-d H:i:s", strtotime( $registered ." ".get_option('timezone_string')) ) );
}