powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP, странно работает DateTime::format
5 сообщений из 5, страница 1 из 1
PHP, странно работает DateTime::format
    #38902232
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использую такой код:
Код: php
1.
$clock = $class->dateString(null, 'Y-m-d');


dateString это метод:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
        public function dateString($clock=null, $format=null)
        {
                if (isset($clock) && is_object($clock) && is_a($clock, 'DateTime'))
                {
                        $dt = $clock;
                }
                else
                {
                        $dt = $this->dateLocal($clock);
var_dump($dt);
                }
var_dump($format);
                if (!isset($format)) $format = 'Y-m-d H:i:s';
                return $dt->format($format);
        }



Получаю такой вывод:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
object(DateTime)#6 (3) {
  ["date"]=>
  string(26) "2015-03-12 11:59:45.000000"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(13) "Europe/Moscow"
}
string(5) "Y-m-d"
PHP Fatal error:  Call to a member function format() on a non-object in ...

Если в вызове я укажу dateString(null, 'Y-m-d H:i:s') или dateString(), тогда все выполняется без ошибок.

Почему метод format не работает? Ведь $dt это объект DateTime.

________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
PHP, странно работает DateTime::format
    #38902244
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такой костыль работает:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
        public function dateString($clock=null, $format=null)
        {
                if (isset($clock) && is_object($clock) && is_a($clock, 'DateTime'))
                {
                        $dt = $clock;
                }
                else
                {
                        $dt = $this->dateLocal($clock);
                }
                if (!isset($format)) $format = 'Y-m-d H:i:s';
                $ts = $dt->format('U');
                return date($format, $ts);
        }



Но непонятно, почему не работает собственный метод.
В результатах date_get_last_errors никаких ошибок нет.
...
Рейтинг: 0 / 0
PHP, странно работает DateTime::format
    #38902382
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

код $this->dateLocal() в студию
...
Рейтинг: 0 / 0
PHP, странно работает DateTime::format
    #38902494
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так ведь $dt является объектом DateTime, видно же в дампе.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
        public function dateLocal($clock=null, $remotetz=false)
        {
                $tz = new DateTimeZone($this->tz);
                if (isset($clock))
                {
                        if (is_object($clock) && is_a($clock, 'DateTime'))
                        {
                                $dt = $clock;
                                $dt->setTimezone($tz);
                        }
                        else
                        {
                                $fmt = 'Y-m-d\TH:i:s';
                                $dt = DateTime::createFromFormat($fmt, $clock, $tz);
                        }
                }
                else
                {
                        $dt = new DateTime(null, $tz);
                }
                if ($remotetz) $dt->setTimezone(new DateTimezone(date_default_timezone_get()));
                return $dt;
        }
...
Рейтинг: 0 / 0
PHP, странно работает DateTime::format
    #38902555
Фотография -k2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
class MyClass {
	protected $tz = "Europe/Moscow";	
	function __construct(){
	}	 
public function dateString($clock=null, $format=null)
        {
                if (isset($clock) && is_object($clock) && is_a($clock, 'DateTime'))
                {
                        $dt = $clock;
                }
                else
                {
                        $dt = $this->dateLocal($clock);
var_dump($dt);
                }
var_dump($format);
                if (!isset($format)) $format = 'Y-m-d H:i:s';
                return $dt->format($format);
        }

        public function dateLocal($clock=null, $remotetz=false)
        {
                $tz = new DateTimeZone($this->tz);
                if (isset($clock))
                {
                        if (is_object($clock) && is_a($clock, 'DateTime'))
                        {
                                $dt = $clock;
                                $dt->setTimezone($tz);
                        }
                        else
                        {
                                $fmt = 'Y-m-d\TH:i:s';
                                $dt = DateTime::createFromFormat($fmt, $clock, $tz);
                        }
                }
                else
                {
                        $dt = new DateTime(null, $tz);
                }
                if ($remotetz) $dt->setTimezone(new DateTimezone(date_default_timezone_get()));
                return $dt;
        }
}
$inst = new MyClass();
$clock = $inst->dateString(null, 'Y-m-d');
var_dump("clock=" .$clock); 
//object(DateTime)#33 (3) { ["date"]=> string(19) "2015-03-12 16:13:05" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Moscow" } string(5) "Y-m-d" string(16) "clock=2015-03-12"


все вроде в порядке
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP, странно работает DateTime::format
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]