PHP неправильная дата объявления - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь получить атрибут 'passwordLastSet' из Active Directory, но он возвращается на 1 час меньше.

Возврат: 11-05-2018 10:30:07

Должно быть: 11-05-2018 11:30:07 (реальный пароль последнего времени изменен)

enter image description here

Сервер Active Directory (Windows Server 2012) одновременно является сервером PHP (мой компьютер для разработки)

Мой часовой пояс на PHP установлен на Европа / Лиссабон, функция даты возвращает правильное время.

Я использую LDAP tools

Мой запрос:

    $user = $ldap->buildLdapQuery()
        ->select(['username', 'emailAddress', 'firstName', 'lastName', 'passwordLastSet'])
        ->fromUsers()
        ->where(['username' => $username])
        ->getLdapQuery()
        ->getSingleResult();

Возврат:

date_format($user->passwordLastSet, 'd-m-Y H:i:s')

Кто-нибудь может мне помочь?

Спасибо

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

var_dump($user->passwordLastSet) дает:

object(DateTime)#52 (3) {
    ["date"]=> string(26) "2018-05-11 10:30:07.000000"
    ["timezone_type"]=> int(1)
    ["timezone"]=> string(6) "+00:00"
}

Это говорит нам о том, что $user->passwordLastSet является DateTime объектом, содержащим часовой пояс UTC, поэтому, когда вы форматируете его, он просто выводит это значение - и так как вы в настоящее время используете летнее время время (UTC+1) это час позади.

Вам необходимо изменить часовой пояс для этого DateTime объекта перед его выводом, например:

$user->passwordLastSet->setTimeZone(new DateTimezone('Europe/Lisbon'));
echo $user->passwordLastSet->format('d-m-Y H:i:s');
0 голосов
/ 11 мая 2018

Вы можете ниже пример:

 $data= "2010-03-21";
 $newDate = date("d-m-Y", strtotime($data));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...