Как я могу легко преобразовать даты из UTC через PHP?

- (void)swapTopViewController:(UIViewController *)topViewController{
    NSArray *viewControllers = [self.navigationController viewControllers];
    NSMutableArray *editableViewControllers = [NSMutableArray arrayWithArray:viewControllers];
    [editableViewControllers removeLastObject];
    [editableViewControllers addObject:topViewController];
    [self.navigationController setViewControllers:editableViewControllers];
}
8
задан Chad Johnson 4 June 2009 в 09:42
поделиться

4 ответа

Вот что мы сделали с наши серверы. Мы устанавливаем все для использования UTC, и мы отображаем в часовом поясе пользователя, конвертируя из UTC на лету. Код внизу этого поста является примером того, как заставить это работать; вы должны подтвердить, что он работает во всех случаях с вашей настройкой (например, летнее время и т. д.).

Настройка CentOS

  1. Отредактируйте / etc / sysconfig / clock и установите для ZONE значение UTC
  2. ln -sf / usr / share / zoneinfo / UTC / etc / localtime

Настройка MySQL

  1. При необходимости импортируйте часовые пояса в MySQL:

    mysql_tzinfo_to_sql / usr / share / zoneinfo | mysql -u root -p mysql

  2. Отредактируйте my.cnf и добавьте следующее в раздел [mysqld]:

    default-time-zone = 'UTC'

Код PHP

<?php
/*
Example usage:
  $unixtime = TimeUtil::dateTimeToTimestamp('2009-04-01 15:36:13');
  echo TimeUtil::UTCToPST("M d, Y - H:i:s", $unixtime);
*/

// You should move this to your regular init method
date_default_timezone_set('UTC'); // make this match the server timezone

class TimeUtil {
    public static function timestampToDateTime($timestamp) {
        return gmdate('Y-m-d H:i:s', $timestamp);
    }

    public static function dateTimeToTimestamp($dateTime) {
        // dateTimeToTimestamp expects MySQL format
        // If it gets a fully numeric value, we'll assume it's a timestamp
        // You can comment out this if block if you don't want this behavior
        if(is_numeric($dateTime)) {
            // You should probably log an error here
            return $dateTime;
        }
        $date = new DateTime($dateTime); 
        $ret = $date->format('U');
        return ($ret < 0 ? 0 : $ret);
    }

    public static function UTCToPST($format, $time) {
        $dst = intval(date("I", $time));
        $tzOffset = intval(date('Z', time()));
        return date($format, $time + $tzOffset - 28800 + $dst * 3600);
    }

}
7
ответ дан 3 November 2019 в 12:56
поделиться

Почему бы не использовать встроенную функцию DateTime / TimeZone ?

<?php

$mysqlDate = '2009-04-01 15:36:13';

$dateTime = new DateTime ($mysqlDate);
$dateTime->setTimezone(new DateTimeZone('America/Los_Angeles'));

?>

Класс DateTime: http://us3.php.net/manual/en/ class.datetime.php Класс DateTimeZone: http://us3.php.net/manual/en/class.datetimezone.php

Часовые пояса, поддерживаемые PHP: http://php.net/manual/en/timezones.php

18
ответ дан 3 November 2019 в 12:56
поделиться

Потратив много времени на решение этой проблемы, не пытайтесь реализовать перевод часовых поясов самостоятельно. Это королевская PIA, чреватая трудностями, и ее очень сложно сделать правильно на международном уровне.

Тем не менее, лучший вариант - преобразовать ваши datetime s в MySQL в timestamp s, и просто используйте базу данных для преобразования времени:

 mysql> set time_zone='America/New_York';

timestamp s в MySQL меньше и поддерживают преобразование часовых поясов. datetime - нет.

Перед отображением информации о сайте на странице просто вызовите указанную выше команду, и она будет отображаться правильно без каких-либо изменений кода PHP.

Предостережения:

  1. Если вы используете NOW () или любые функции местного времени,
1
ответ дан 3 November 2019 в 12:56
поделиться

Самоорганизующаяся карта (SOM) - это метод кластеризации, рассматриваемый как неконтролируемый вариант Искусственная нейронная сеть (ИНС) . Он использует методы конкурентного обучения для обучения сети (узлы соревнуются между собой, чтобы отобразить наиболее сильную активацию заданных данных)

www.lohninger.com/helpcsuite/kohonen_network_-_background_information.htm

Вы можете думать о SOM, как если бы он состоял из сетки взаимосвязанных узлов (квадрат форма, шестиугольная, ..), где каждый узел представляет собой N-мерный вектор весов (размер такой же, как у точек данных, которые мы хотим кластеризовать).

Идея проста; учитывая вектор в качестве входных данных в SOM, мы находим узел , закрытый к нему, затем обновляем его веса и веса соседних узлов, чтобы они приближались к входному вектору (отсюда и название самоорганизующиеся) . Этот процесс повторяется для всех входных данных.

plotsompos

Сформированные кластеры неявно определяются тем, как узлы организуются и образуют группу узлов с одинаковыми весами. Их легко увидеть визуально.

plotsomnd

SOM похожи на алгоритм K-средних , но отличаются тем, что мы не навязываем фиксированное количество кластеров, вместо этого мы указываем количество и форму узлов в сетке, которые мы хотим адаптировать к нашим данным.

Обычно, когда у вас есть обученный SOM,

0
ответ дан 3 November 2019 в 12:56
поделиться
Другие вопросы по тегам:

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