Time decoding is not bit rotating (by 4), but you can use
[(e&0xf)*10+(e>>4) for e in data[1:8]]
Please see this multiplication by 10.
TZ decoding must be done before time decoding. So,
tz='+'
if data[7]&0x08:
tz='-'
data[7]&=0xf7
Except these points, this problem was indeed fun. ^^
Created at: 2014/02/20 12:49; Updated at: 2014/02/20 12:49