Some days ago, with MDL-13959 , we fixed the usergetdate() to work properly with timezones passed as parameters, because DSTs weren't being properly calculated then. The solution was about to "save" the parameter value and then pass it straight to the dst_offset_on() function. Else, the original parameter became transformed and DST weren't applied.
The same behaviour can be extended to other moodlelib functions:
make_timestamp()
userdate()
usergetmidnight()
All them can accept one timezone parameter and, if used, DST aren't properly applied.
IMPORTANT NOTE: This doesn't affect normal Moodle operations, where the DST to be applied is calculated by looking server and user timezones. This ONLY affects it we want to know the time in another timezone (imagine one block showing different times or something like that).
So those functions should be patched with a similar solution that the one used for usergetdate() in MDL-13959.