Fix for Swedish Midsummer Day.

svn: r14160
This commit is contained in:
Peter Landgren 2010-01-29 08:02:34 +00:00
parent 6b7f7c4684
commit ec414b933c
2 changed files with 28 additions and 44 deletions

View File

@ -301,7 +301,7 @@
<date name="2. Pääsiäispäivä" value="2010/4/5" type="religious" /> <date name="2. Pääsiäispäivä" value="2010/4/5" type="religious" />
<date name="2. Pääsiäispäivä" value="2011/4/25" type="religious" /> <date name="2. Pääsiäispäivä" value="2011/4/25" type="religious" />
<date name="2. Pääsiäispäivä" value="2012/4/9" type="religious" /> <date name="2. Pääsiäispäivä" value="2012/4/9" type="religious" />
<date name="2. Pääsiäispäivä" value="2013/4/1" type="religious" /> <date name="2. Pääsiäispäivä" value="2013/4/1" type="religious" />easter
<date name="2. Pääsiäispäivä" value="2014/4/21" type="religious" /> <date name="2. Pääsiäispäivä" value="2014/4/21" type="religious" />
<date name="2. Pääsiäispäivä" value="2015/4/6" type="religious" /> <date name="2. Pääsiäispäivä" value="2015/4/6" type="religious" />
<date name="Helatorstai" value="2000/6/1" type="religious" /> <date name="Helatorstai" value="2000/6/1" type="religious" />
@ -403,48 +403,18 @@
<date name="début Kwanzaa" value="*/12/26" type="religious" /> <date name="début Kwanzaa" value="*/12/26" type="religious" />
</country> </country>
<country name="Sverige - röda dagar"> <country name="Sverige - röda dagar">
<date name="Nyårsdagen" value="*/1/1" type="National" /> <date name="Nyårsdagen" value="*/1/1" type="religious" />
<date name="Trettondagen" value="*/1/5" type="National" /> <date name="Trettondagen" value="*/1/6" type="religious" />
<date name="Långfredagen" value="2007/4/6" type="National" /> <date name="Långfredagen" type="religious" value="> easter(y)" offset="-2" />
<date name="Påskdagen" value="2007/4/8" type="National" /> <date name="Påskdagen" type="religious" value="> easter(y)" />
<date name="Annandag Påsk" value="2007/4/9" type="National" /> <date name="Annandag Påsk" type="religious" value="> easter(y)" offset="2" />
<date name="Långfredagen" value="2008/3/21" type="National" /> <date name="Första Maj" value="*/5/1" type="secular" />
<date name="Påskdagen" value="2008/3/23" type="National" /> <date name="Kristi Himmelfärdsdag" type="religious" value="> easter(y)" offset="+39" />
<date name="Annandag Påsk" value="2008/3/24" type="National" /> <date name="Nationaldag" value="*/6/6" type="secular" />
<date name="Långfredagen" value="2009/4/10" type="National" /> <date name="Midsommardagen" value="> swedish_midsummer_day(y)" type="religious" />
<date name="Påskdagen" value="2009/4/12" type="National" /> <date name="Allahelgonadagen" value="*/1/sat/nov" type="religious" />
<date name="Annandag Påsk" value="2009/4/13" type="National" /> <date name="Juldagen" value="*/12/25" type="religious" />
<date name="Långfredagen" value="2010/4/2" type="National" /> <date name="Annandag Jul" value="*/12/26" type="religious" />
<date name="Påskdagen" value="2010/4/4" type="National" />
<date name="Annandag Påsk" value="2010/4/5" type="National" />
<date name="Långfredagen" value="2011/4/21" type="National" />
<date name="Påskdagen" value="2011/4/24" type="National" />
<date name="Annandag Påsk" value="2011/4/25" type="National" />
<date name="Långfredagen" value="2012/4/6" type="National" />
<date name="Påskdagen" value="2012/4/8" type="National" />
<date name="Annandag Påsk" value="2012/4/9" type="National" />
<date name="Långfredagen" value="2013/3/29" type="National" />
<date name="Påskdagen" value="2013/3/31" type="National" />
<date name="Annandag Påsk" value="2013/4/1" type="National" />
<date name="Långfredagen" value="2014/4/18" type="National" />
<date name="Påskdagen" value="2014/4/20" type="National" />
<date name="Annandag Påsk" value="2014/4/21" type="National" />
<date name="Långfredagen" value="2015/4/3" type="National" />
<date name="Påskdagen" value="2015/4/5" type="National" />
<date name="Annandag Påsk" value="2015/4/6" type="National" />
<date name="Första Maj" value="*/5/1" type="National" />
<date name="Kristi Himmelfärdsdag" value="2009/5/21" type="National" />
<date name="Kristi Himmelfärdsdag" value="2010/5/13" type="National" />
<date name="Kristi Himmelfärdsdag" value="2011/6/2" type="National" />
<date name="Kristi Himmelfärdsdag" value="2012/5/17" type="National" />
<date name="Kristi Himmelfärdsdag" value="2013/5/9" type="National" />
<date name="Kristi Himmelfärdsdag" value="2014/5/29" type="National" />
<date name="Kristi Himmelfärdsdag" value="2015/5/14" type="National" />
<date name="Nationaldag" value="*/6/6" type="National" />
<date name="Midsommardagen" value="*/3/sat/jun" type="National" />
<date name="Allahelgonadagen" value="*/1/sat/nov" type="National" />
<date name="Juldagen" value="*/12/25" type="National" />
<date name="Annandag Jul" value="*/12/26" type="National" />
</country> </country>
<country name="England"> <country name="England">
<date name="New Year's Day" value="2010/1/1" type="National" /> <date name="New Year's Day" value="2010/1/1" type="National" />

View File

@ -87,6 +87,21 @@ def dst(year, area="us"):
stop = "%d/%d/%d" % (year, 10, (31 - (math.floor(year * 5 / 4) + 1) % 7)) # Oct stop = "%d/%d/%d" % (year, 10, (31 - (math.floor(year * 5 / 4) + 1) % 7)) # Oct
return (start, stop) return (start, stop)
def swedish_midsummer_day(year):
"""
Function for calculating date for Swedish Midsummer Day
It is Saturday in week number 25, which is the third or
forth Saturday in June.
First possible date for third Saturday is June, 15
Last possible date for fourth Saturday is June, 28
In holidays.xml it is called by
<date name="Midsommardagen" value="> swedish_midsummer_day(y)" type="religious" />
"""
for day in range(15,29):
d = datetime.date(year, 6, day)
if (year, 25, 6) == d.isocalendar():
return str(year) + "/6/" + str(day)
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
# HolidayTable # HolidayTable
@ -358,7 +373,6 @@ class _Holidays:
if self.debug: if self.debug:
print "rule['value']:", rule["value"] print "rule['value']:", rule["value"]
if rule["value"].count("/") == 3: # year/num/day/month, "3rd wednesday in april" if rule["value"].count("/") == 3: # year/num/day/month, "3rd wednesday in april"
y, num, dayname, mon = rule["value"].split("/") y, num, dayname, mon = rule["value"].split("/")
if y == "*": if y == "*":