воскресенье, 30 октября 2011 г.

Обновление Windows для российской временной зоны

В 2011 президент отменил зимнее время. Тем пользователям Windows, у которых автоматически устанавливаются обновления, напрягаться не нужно: у них уже исправлена временная зона. Остальным придется скачать обновление.

Вот прямые ссылки на файлы:
Windows 7 x64 KB2570791
Windows 7 x86 KB2570791
Windows XP x86 KB2570791

суббота, 18 июня 2011 г.

PHP неправильно обрезает строку

Очень часто PHP-разработчики сталкиваются с такой проблемой:
обрезав строку по длине, в конце строки появляется символ "�".

Это происходит из-за того, что строка хранится в кодировке юникода(как правило - utf-8), а функция substr работает только с "однобайтными" кодировками.

Решение - вместо substr использовать функцию mb_substr.

substr($string, $length, $count)
заменяем на
mb_substr($string, $length, $count, 'utf-8')

среда, 18 мая 2011 г.

Перевести время из одной зоны в другую

В 15-00 по времени Екатеринбурга (UTC+6) произошло некоторое событие.
В Красноярске (UTC+8) в это время уже 17-00, на два часа "больше".
Жителю Красноярска мы должны показать его местное время для этого события.

Как сделать это в C++?

Заполним структуру tmDateExternal типа tm, запишем в нее исходное время. Запишем в int nSrcTZ "смещение" UTC для исходного времени, то есть 6.
__time64_t t64date = _mkgmtime64(&tmDateExternal) - nSrcTZ*60*60;
tm tmDateLocal;
_localtime64_s( &tmDateLocal, &t64date );

Теперь в структуре tmDateLocal находится локальное время для исходного события.