I don't think the current ICU API allows this bug to be completely fixed. Right now, the code cannot control the time zone used in date/time formats that appear inside complex subformats. See the comment inside umsg_set_timezone().