Whether the manpage says it or not, I can pretty much guarantee you
libc does do this automatically on OSX and FreeBSD. If it didn't, the
majority of programs that used localtime() would not work properly.
Straightforward test program follows - I will be surprised if the two
lines it prints are different on any system at all (note that it does
nothing interesting if TZ=UTC).
zw
#include <time.h>
#include <stdio.h>
int main(void)
{
time_t now = time(0);
fputs(ctime(&now), stdout);
tzset();
fputs(ctime(&now), stdout);
return 0;
}