Можем ли мы установить форматирование даты по умолчанию для метода даты __toString ()? - PullRequest
1 голос
/ 12 ноября 2010

Например, у меня есть дата:

$date = mktime();

И в нашем проекте у меня было много мест, где мы использовали

echo $date

Можем ли мы изменить форматирование даты в этом случае? Как мы можем это сделать?

Ответы [ 5 ]

2 голосов
/ 12 ноября 2010

Магический метод __toString может быть объявлен только для классов / объектов. Поскольку mktime возвращает целое число, вы не можете его перегрузить.

Существует класс DateTime , начиная с PHP 5.2. Технически, вы можете создать свой собственный MyDateTime, который расширяет встроенный (или просто создать свой собственный класс DateTime) и перегружать там __toString, чтобы представить любую строку даты / времени по умолчанию, которую вы хотите.

Если вы хотите придерживаться mktime (который, кстати, возвращает то же самое, что и time, когда ему не переданы аргументы), вы можете использовать либо date, либо stftime:

$dateTime = date('Y-m-d H:i:s', $time);
$dateTime = strftime('%Y-%m-%d %H:%M:%S', $time);
1 голос
/ 12 ноября 2010

Вы можете обернуть обработку даты PHP в свой собственный класс, чтобы получить пользовательское значение __toString():

class MyDate
{
    private $date;
    private $format = 'r';

    public function __construct()
    {
        $this->date = mktime();
    }

    public function setFormat($format)
    {
        $this->format = $format;
    }

    public function __toString()
    {
        return date($this->format, $this->date);
    }
}

Затем вы можете назвать это следующим образом:

$date = new MyDate();
echo $date; // "Fri, 12 Nov 2010 17:21:28 +0100"
$date->setFormat('d/m/Y');
echo $date; // "12/11/2010"

Если вы хотите сделать это с пользовательскими датами, вам нужно написать функциональность для передачи их из конструктора в вызов mktime.Это не должно быть сложно.

0 голосов
/ 12 ноября 2010

Проверьте функцию date в PHP. Примеры № 3 и № 4 хорошо соответствуют тому, что вы просите.

0 голосов
/ 12 ноября 2010

Опираясь на ответ Эвана: даже если у вас нет PHP 5.2.0 или выше, функция date () отформатирует время.

0 голосов
/ 12 ноября 2010

PHP имеет встроенную функцию для этого:

http://www.php.net/manual/en/datetime.format.php

Символы форматирования находятся здесь:

http://php.net/manual/en/function.date.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...