in reply to bst time?
If you're into DIY rather than humungous modules, this routine calculates the unix epoch (GMT) for the start and end of BST (and European ST) for the years since they were unified in 1996:
#! perl -slw use strict; use 5.010; sub EuST { state %EuST; my $year = shift; return @{ $EuST{ $year } } if exists $EuST{ $year }; my $start = 1; $start += 86400*365.25 for 1 .. ($year-1970); $start -= 86400 until scalar localtime( $start ) =~ /${ \( $year - + 1 ) }/; $start += 1 until scalar localtime( $start ) =~ /$year/; $start += 59*60+59; $start += 86400*85; $start += 86400 until localtime( $start ) =~ /Apr/; $start -= 86400; $start -= 86400 until localtime( $start ) =~ /Sun/; my $end = $start + 86400 * 30 * 7; $end += 86400 until scalar localtime( $end ) =~ /Nov/; $end -= 86400; $end -= 86400 until scalar localtime( $end ) =~ /Sun/; @{ $EuST{ $year } } = ( $start, $end ); } our $YEAR //= 2013; say map{; "Epoch: $_ => ", scalar localtime( $_ ), ' ' } EuST( $YEAR ) +; __END__ C:\test>for /l %y in (1995,1,2013) do @EuST -YEAR=%y Epoch: 796179599 => Sun Mar 26 00:59:59 1995 Epoch: 814928399 => Sun O +ct 29 01:59:59 1995 Epoch: 828233999 => Sun Mar 31 00:59:59 1996 Epoch: 846377999 => Sun O +ct 27 01:59:59 1996 Epoch: 859683599 => Sun Mar 30 00:59:59 1997 Epoch: 877827599 => Sun O +ct 26 01:59:59 1997 Epoch: 891133199 => Sun Mar 29 00:59:59 1998 Epoch: 909277199 => Sun O +ct 25 01:59:59 1998 Epoch: 922582799 => Sun Mar 28 00:59:59 1999 Epoch: 941331599 => Sun O +ct 31 01:59:59 1999 Epoch: 954032399 => Sun Mar 26 00:59:59 2000 Epoch: 972781199 => Sun O +ct 29 01:59:59 2000 Epoch: 985481999 => Sun Mar 25 00:59:59 2001 Epoch: 1004230799 => Sun +Oct 28 01:59:59 2001 Epoch: 1017536399 => Sun Mar 31 00:59:59 2002 Epoch: 1035680399 => Sun + Oct 27 01:59:59 2002 Epoch: 1048985999 => Sun Mar 30 00:59:59 2003 Epoch: 1067129999 => Sun + Oct 26 01:59:59 2003 Epoch: 1080435599 => Sun Mar 28 00:59:59 2004 Epoch: 1099184399 => Sun + Oct 31 01:59:59 2004 Epoch: 1111885199 => Sun Mar 27 00:59:59 2005 Epoch: 1130633999 => Sun + Oct 30 01:59:59 2005 Epoch: 1143334799 => Sun Mar 26 00:59:59 2006 Epoch: 1162083599 => Sun + Oct 29 01:59:59 2006 Epoch: 1174784399 => Sun Mar 25 00:59:59 2007 Epoch: 1193533199 => Sun + Oct 28 01:59:59 2007 Epoch: 1206838799 => Sun Mar 30 00:59:59 2008 Epoch: 1224982799 => Sun + Oct 26 01:59:59 2008 Epoch: 1238288399 => Sun Mar 29 00:59:59 2009 Epoch: 1256432399 => Sun + Oct 25 01:59:59 2009 Epoch: 1269737999 => Sun Mar 28 00:59:59 2010 Epoch: 1288486799 => Sun + Oct 31 01:59:59 2010 Epoch: 1301187599 => Sun Mar 27 00:59:59 2011 Epoch: 1319936399 => Sun + Oct 30 01:59:59 2011 Epoch: 1332637199 => Sun Mar 25 00:59:59 2012 Epoch: 1351385999 => Sun + Oct 28 01:59:59 2012 Epoch: 1364691599 => Sun Mar 31 00:59:59 2013 Epoch: 1382835599 => Sun + Oct 27 01:59:59 2013
Of course, my localtime *is* BST so you would need to adjust them for your local timezone.
|
|---|