Если вы хотите получить компенсацию не летнего / летнего времени, вам нужно сделать что-то вроде:
date -d 'Jan 1' +%z
(или июль в южном полушарии). В любом случае, это работает с датой из GNU coreutils.
Достаточно шокирующе, я не вижу способа получить флаг tm_isdst от даты.