PHP: Как правильно установить часовой пояс? [Дубликат]

Как было предложено в комментариях, одним из подходов было бы сначала сгруппировать список в кортежи длины 3, используя прелюдии zip3 и tail :

*Main> let xs = [0,1,5,2,3,7,8,4]
*Main> zip3 xs (tail xs) (tail (tail xs))
[(0,1,5),(1,5,2),(5,2,3),(2,3,7),(3,7,8),(7,8,4)]

Который имеет тип: [a] -> [b] -> [c] -> [(a, b, c)] и [a] -> [a] соответственно.

Далее вам нужно найти способ отфильтровать кортежи, где средний элемент больше, чем первый и последний. Одним из способов было бы использовать функцию Preludes filter :

*Main> let xs = [(0,1,5),(1,5,2),(5,2,3),(2,3,7),(3,7,8),(7,8,4)]
*Main> filter (\(a, b, c) -> b > a && b > c) xs
[(1,5,2),(7,8,4)]

Который имеет тип: (a -> Bool) -> [a] -> [a]. Это отфильтровывает элементы списка, основанные на булевом возврате из переданного предиката.

Теперь для последней части вам нужно извлечь средний элемент из фильтрованных кортежей выше. Вы можете сделать это легко с помощью функции Прелюдии map :

*Main> let xs = [(1,5,2),(7,8,4)]
*Main> map (\(_, x, _) -> x) xs
[5,8]

Какой тип: (a -> b) -> [a] -> [b]. Эта функция отображает элементы из списка типов a в b.

Вышеупомянутый код, сшитый вместе, будет выглядеть так:

largest :: (Ord a) => [a] -> [a]
largest xs = map (\(_, x, _) -> x) $ filter (\(a, b, c) -> b > a && b > c) $ zip3 xs (tail xs) (tail (tail xs))

Обратите внимание, что здесь я использовал typeclass Ord, так как приведенный выше код должен сравниваться с > и <. Здесь все-таки держать его как Integer.

14
задан dabecks 16 June 2014 в 21:35
поделиться

5 ответов

Очень часто для WAMP / XAMPP и других стеков использовать несколько файлов php.ini - один для cli и один для web.

Поскольку вы завершаете ошибка из CLI попробует следующее:

php -i | grep "php.ini"

это выведет местоположение php.ini, используемое для cli. Отредактируйте date.timezone там.

Что касается веб-режима, создайте файл foo.php в вашем «веб-каталоге» symfony, содержащем только «

<?php phpinfo(); ?>

И снова , найдите местоположение php.ini и отредактируйте date.timezone.

3
ответ дан Jovan Perovic 25 August 2018 в 22:28
поделиться

Нашел аналогичный способ исправить эту проблему, в то время как другие не сделали.

  1. Сначала проверьте, где находится CLI php.ini: php -i | grep "php.ini"
  2. В моем case, я закончил с: Файл конфигурации (php.ini) Path => / etc
  3. Затем cd .. назад и cd в /etc, сделайте ls в моем случае php .ini не отображается, только php.ini.default
  4. Теперь скопируйте файл php.ini.default с именем php.ini: sudo cp php.ini.default php.ini
  5. Чтобы изменить , измените права доступа к файлу: sudo chmod ug+w php.ini sudo chgrp staff php.ini
  6. Откройте каталог и отредактируйте файл php.ini: open . Совет. Если вы не можете редактировать php.ini из-за некоторых проблем с правами доступа, затем скопируйте «php.ini.default» и вставьте его на свой рабочий стол и переименуйте его в «php.ini», затем откройте его и отредактируйте после шага 7. Затем переместите (скопируйте + вставить) его в / etc папка. Проблема будет решена.
  7. Найдите [Дата] и убедитесь, что следующая строка находится в правильном формате: date.timezone = "Europe/Amsterdam"
22
ответ дан Pknife 25 August 2018 в 22:28
поделиться

Если вы не можете установить его правильно в своем php.ini по какой-то причине, вы можете установить его как первое, что есть в вашем AppKernel, например.

class AppKernel extends Kernel
{
    public function __construct($environment, $debug)
    {
        date_default_timezone_set('Europe/London');
        parent::__construct($environment, $debug);
    }

    public function registerBundles()
    {
        $bundles = array(
            ....
        );
    }

    ....
}
29
ответ дан qooplmao 25 August 2018 в 22:28
поделиться

Отредактируйте свой php.ini (необязательно в /etc/php.ini - используйте php -i | grep ini, чтобы найти свою версию) и добавьте часовой пояс.

Например. для Америки / Нью-Йорка это будет:

date.timezone = "America/New_York"

См. http://php.net/manual/en/timezones.america.php

3
ответ дан Snowcrash 25 August 2018 в 22:28
поделиться

Это было упомянуто, но это так же просто, как:

sudo cp /etc/php.ini.default /etc/php.ini

Вы не можете установить часовой пояс если он не может найти файл php.ini !!!!

0
ответ дан StormLover 25 August 2018 в 22:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: