If I might break in here, what I don't get is why the determination of "in the last week" (or month, whatever) needs to be in the kernel. For that matter, if week (month, etc) boundaries have to match civil day boundaries - which is what I, at least, would naïvely expect - then you _do_ need all the timezone baggage, because summer/winter time ("DST") moves civil day boundaries as expressed in UTC.
Timezone not. I mentioned struct tm in first post because I was looking for equivalent of Linux time_to_tm() in NetBSD. time_to_tm() may be used in Linux kernel code. But it's timezone info is not used in this case.
Therefore on NetBSD is sufficient kernel struct clock_ymdhms.Module configuration contains GMT times. Local time is converted to GMT in user-mode app and passed to module and module works with GMT times.
Peter