On 2013-04-02 10:23, John Haxby wrote:
On 02/04/13 09:58, Simon Perreault wrote:
I want to write a cron job or similar that activates one week prior to daylight saving time changes. (Or, more generically, one week prior to any time jumps, for any reason, DST or else.)
Any pointers?
I have looked at the usual places: POSIX time functions, various date/time modules on CPAN, etc. Nothing seems to do that computation. Do I need to parse the tz database myself?
If you're on Linux:
TZ1=$(date +%Z) TZ2=$(date =d 'next week' +%Z) if [ $TZ1 != $TZ2 ]; then echo clocks change next week fi
That wouldn't work if the abbreviations for normal time and daylight savings time are the same, but that might not be a problem for the original poster. It also only works for the date command from GNU coreutils as the -d option either doesn't exist or does something else on other systems. If using the date command from GNU coreutils, you could use +%z or %:z instead of %Z to get a numeric timezone offset instead of a timezone abbreviation.
You can also use localtime(3) with the current time and the current time plus 7*24*2600 and compare the tm_hour field.
That sounds okay, though better to take the minutes into consideration as well in case you call it at xx:59:59 just as the hour is about to roll over. Of course, the cron job would have to run once a day (or whatever, depending on the precision required) to check for a change and then decide what to do. There is no cron time syntax related to jumps in local time. -- -=( Ian Abbott @ MEV Ltd. E-mail: <abbotti@mev.co.uk> )=- -=( Tel: +44 (0)161 477 1898 FAX: +44 (0)161 718 3587 )=-