- (void)swapTopViewController:(UIViewController *)topViewController{
NSArray *viewControllers = [self.navigationController viewControllers];
NSMutableArray *editableViewControllers = [NSMutableArray arrayWithArray:viewControllers];
[editableViewControllers removeLastObject];
[editableViewControllers addObject:topViewController];
[self.navigationController setViewControllers:editableViewControllers];
}
Вот что мы сделали с наши серверы. Мы устанавливаем все для использования UTC, и мы отображаем в часовом поясе пользователя, конвертируя из UTC на лету. Код внизу этого поста является примером того, как заставить это работать; вы должны подтвердить, что он работает во всех случаях с вашей настройкой (например, летнее время и т. д.).
/ etc / sysconfig / clock
и установите для ZONE
значение UTC
ln -sf / usr / share / zoneinfo / UTC / etc / localtime
При необходимости импортируйте часовые пояса в MySQL:
mysql_tzinfo_to_sql / usr / share / zoneinfo | mysql -u root -p mysql
Отредактируйте my.cnf и добавьте следующее в раздел [mysqld]:
default-time-zone = 'UTC'
<?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);
}
}
Почему бы не использовать встроенную функцию 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
Потратив много времени на решение этой проблемы, не пытайтесь реализовать перевод часовых поясов самостоятельно. Это королевская PIA, чреватая трудностями, и ее очень сложно сделать правильно на международном уровне.
Тем не менее, лучший вариант - преобразовать ваши datetime s в MySQL в timestamp s, и просто используйте базу данных для преобразования времени:
mysql> set time_zone='America/New_York';
timestamp s в MySQL меньше и поддерживают преобразование часовых поясов. datetime - нет.
Перед отображением информации о сайте на странице просто вызовите указанную выше команду, и она будет отображаться правильно без каких-либо изменений кода PHP.
Предостережения:
Самоорганизующаяся карта (SOM) - это метод кластеризации, рассматриваемый как неконтролируемый вариант Искусственная нейронная сеть (ИНС) . Он использует методы конкурентного обучения для обучения сети (узлы соревнуются между собой, чтобы отобразить наиболее сильную активацию заданных данных)
Вы можете думать о SOM, как если бы он состоял из сетки взаимосвязанных узлов (квадрат форма, шестиугольная, ..), где каждый узел представляет собой N-мерный вектор весов (размер такой же, как у точек данных, которые мы хотим кластеризовать).
Идея проста; учитывая вектор в качестве входных данных в SOM, мы находим узел , закрытый к нему, затем обновляем его веса и веса соседних узлов, чтобы они приближались к входному вектору (отсюда и название самоорганизующиеся) . Этот процесс повторяется для всех входных данных.
Сформированные кластеры неявно определяются тем, как узлы организуются и образуют группу узлов с одинаковыми весами. Их легко увидеть визуально.
SOM похожи на алгоритм K-средних , но отличаются тем, что мы не навязываем фиксированное количество кластеров, вместо этого мы указываем количество и форму узлов в сетке, которые мы хотим адаптировать к нашим данным.
Обычно, когда у вас есть обученный SOM,