El problema está en el filtro "readableDateFilter". En dicho filtro, se suma una hora (la diferencia entre hora universal y la hora server), y se llama a la función getGameTimeDayOffset para saber si la hora está en "ayer", "hoy" o "mañana".
El problema es que dentro de getGameTimeDayOffset vuelve a añadirse otra vez una hora. Por tanto a las horas se les añade dos veces el ajuste horario, cuando sólo debería añadirse una.
filter = function(ms, opt_locale, opt_timezone, opt_offset, opt_dateFormat) {
(...)
if (ms && offset) {
ms = ms + offset;
}
if (ms && dateFormat.indexOf('short') < 0) {
dayOffset = timeHelper.getGameTimeDayOffset(ms, opt_timezone);
(...)
}
getGameTimeDayOffset = function getGameTimeDayOffset(timestamp, opt_timezone) {
(...)
timestamp += offset;
(...)
}
De las líneas en rojo sólo debería ejecutarse una, pero se ejecutan las dos.