Skip to content

Commit

Permalink
FIX: IsPublicHoliday methods should ignore time part
Browse files Browse the repository at this point in the history
  • Loading branch information
Martin Willey committed Jan 4, 2016
1 parent a77046b commit 84ffa4f
Show file tree
Hide file tree
Showing 13 changed files with 120 additions and 87 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -216,3 +216,4 @@ pip-log.txt
nuget/NuGet.exe
*.bat
*.nupkg
PublicHoliday.sln.GhostDoc.xml
25 changes: 13 additions & 12 deletions src/PublicHoliday/BelgiumPublicHoliday.cs
Original file line number Diff line number Diff line change
Expand Up @@ -228,48 +228,49 @@ public virtual IDictionary<DateTime, string> PublicHolidayNamesFrench(int year)
public override bool IsPublicHoliday(DateTime dt)
{
var year = dt.Year;
var date = dt.Date;

switch (dt.Month)
{
case 1:
if (NewYear(year) == dt)
if (NewYear(year) == date)
return true;
break;
case 3:
case 4:
if (EasterMonday(year) == dt)
if (EasterMonday(year) == date)
return true;
break;
case 5:
if (MayDay(year) == dt)
if (MayDay(year) == date)
return true;
if (Ascension(year) == dt)
if (Ascension(year) == date)
return true; //usually in May (may 25, 2006)
if (PentecostMonday(year) == dt)
if (PentecostMonday(year) == date)
return true; // May 20 2004
break;
case 6:
if (Ascension(year) == dt)
if (Ascension(year) == date)
return true; //Ascension was June 1 2000
if (PentecostMonday(year) == dt)
if (PentecostMonday(year) == date)
return true; // June 12 2006
break;
case 7:
if (National(year) == dt)
if (National(year) == date)
return true; //21st July
break;
case 8:
if (Assumption(year) == dt)
if (Assumption(year) == date)
return true; //August 15, fixed
break;
case 11:
if (AllSaints(year) == dt)
if (AllSaints(year) == date)
return true;
if (Armistice(year) == dt)
if (Armistice(year) == date)
return true;
break;
case 12:
if (Christmas(year) == dt)
if (Christmas(year) == date)
return true;
break;
}
Expand Down
21 changes: 11 additions & 10 deletions src/PublicHoliday/CanadaPublicHoliday.cs
Original file line number Diff line number Diff line change
Expand Up @@ -233,11 +233,12 @@ public override bool IsPublicHoliday(DateTime dt)
private static bool IsPublicHoliday(DateTime dt, DateTime? easter)
{
int year = dt.Year;
var date = dt.Date;

switch (dt.Month)
{
case 1:
if (NewYear(year) == dt)
if (NewYear(year) == date)
return true;
break;
case 3:
Expand All @@ -248,41 +249,41 @@ private static bool IsPublicHoliday(DateTime dt, DateTime? easter)
return false;
//easter can be in March or April
var easterDate = !easter.HasValue ? HolidayCalculator.GetEaster(year) : easter.Value;
if (GoodFriday(easterDate) == dt)
if (GoodFriday(easterDate) == date)
return true;
if (EasterMonday(easterDate) == dt)
if (EasterMonday(easterDate) == date)
return true;
break;
case 5:
if (dt.DayOfWeek != DayOfWeek.Monday)
return false;
if (VictoriaDay(year) == dt)
if (VictoriaDay(year) == date)
return true;
break;
case 7:
if (CanadaDay(year) == dt)
if (CanadaDay(year) == date)
return true;
break;
case 9:
if (dt.DayOfWeek != DayOfWeek.Monday)
return false;
if (LabourDay(year) == dt)
if (LabourDay(year) == date)
return true;
break;
case 10:
if (dt.DayOfWeek != DayOfWeek.Monday)
return false;
if (Thanksgiving(year) == dt)
if (Thanksgiving(year) == date)
return true;
break;
case 11:
if (RemembranceDay(year) == dt)
if (RemembranceDay(year) == date)
return true;
break;
case 12:
if (Christmas(year) == dt)
if (Christmas(year) == date)
return true;
if (BoxingDay(year) == dt)
if (BoxingDay(year) == date)
return true;
break;
}
Expand Down
21 changes: 11 additions & 10 deletions src/PublicHoliday/DutchPublicHoliday.cs
Original file line number Diff line number Diff line change
Expand Up @@ -176,39 +176,40 @@ public override IDictionary<DateTime, string> PublicHolidayNames(int year)
public override bool IsPublicHoliday(DateTime dt)
{
var year = dt.Year;
var date = dt.Date;

switch (dt.Month)
{
case 1:
if (NewYear(year) == dt)
if (NewYear(year) == date)
return true;
break;
case 3:
case 4:
case 8:
if (EasterMonday(year) == dt)
if (EasterMonday(year) == date)
return true;
if (KingsDay(year) == dt) // Usually April 27, but historically also in August
if (KingsDay(year) == date) // Usually April 27, but historically also in August
return true;
break;
case 5:
if (LiberationDay(year) == dt)
if (LiberationDay(year) == date)
return true;
if (Ascension(year) == dt)
if (Ascension(year) == date)
return true; // usually in May (may 25, 2006)
if (PentecostMonday(year) == dt)
if (PentecostMonday(year) == date)
return true; // May 20 2004
break;
case 6:
if (Ascension(year) == dt)
if (Ascension(year) == date)
return true; // Ascension was June 1 2000
if (PentecostMonday(year) == dt)
if (PentecostMonday(year) == date)
return true; // June 12 2006
break;
case 12:
if (Christmas(year) == dt)
if (Christmas(year) == date)
return true;
if (BoxingDay(year) == dt)
if (BoxingDay(year) == date)
return true;
break;
}
Expand Down
27 changes: 14 additions & 13 deletions src/PublicHoliday/FrancePublicHoliday.cs
Original file line number Diff line number Diff line change
Expand Up @@ -210,50 +210,51 @@ public override IDictionary<DateTime, string> PublicHolidayNames(int year)
public override bool IsPublicHoliday(DateTime dt)
{
var year = dt.Year;
var date = dt.Date;

switch (dt.Month)
{
case 1:
if (NewYear(year) == dt)
if (NewYear(year) == date)
return true;
break;
case 3:
case 4:
if (EasterMonday(year) == dt)
if (EasterMonday(year) == date)
return true;
break;
case 5:
if (MayDay(year) == dt)
if (MayDay(year) == date)
return true;
if (Ascension(year) == dt)
if (Ascension(year) == date)
return true; //usually in May (may 25, 2006)
if (VictoryInEuropeDay(year) == dt)
if (VictoryInEuropeDay(year) == date)
return true; // May 8, fixed
if (PentecostMonday(year) == dt)
if (PentecostMonday(year) == date)
return true; // May 20 2004
break;
case 6:
if (Ascension(year) == dt)
if (Ascension(year) == date)
return true; //Ascension was June 1 2000
if (PentecostMonday(year) == dt)
if (PentecostMonday(year) == date)
return true; // June 12 2006
break;
case 7:
if (National(year) == dt)
if (National(year) == date)
return true; //21st July
break;
case 8:
if (Assumption(year) == dt)
if (Assumption(year) == date)
return true; //August 15, fixed
break;
case 11:
if (AllSaints(year) == dt)
if (AllSaints(year) == date)
return true;
if (Armistice(year) == dt)
if (Armistice(year) == date)
return true;
break;
case 12:
if (Christmas(year) == dt)
if (Christmas(year) == date)
return true;
break;
}
Expand Down
2 changes: 2 additions & 0 deletions src/PublicHoliday/HolidayCalculator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ public static DateTime FindPrevious(DateTime hol, DayOfWeek day)
public static DateTime NextWorkingDay(IPublicHolidays holidayCalendar, DateTime dt)
{
bool isWorkingDay = false;
dt = dt.Date; //we don't care about time part

//loops through
while (isWorkingDay == false)
Expand Down Expand Up @@ -108,6 +109,7 @@ public static DateTime NextWorkingDay(IPublicHolidays holidayCalendar, DateTime
public static DateTime PreviousWorkingDay(IPublicHolidays holidayCalendar, DateTime dt)
{
bool isWorkingDay = false;
dt = dt.Date; //we don't care about time part

//loops through
while (isWorkingDay == false)
Expand Down
33 changes: 17 additions & 16 deletions src/PublicHoliday/NorwayPublicHoliday.cs
Original file line number Diff line number Diff line change
Expand Up @@ -220,50 +220,51 @@ public override IDictionary<DateTime, string> PublicHolidayNames(int year)
public override bool IsPublicHoliday(DateTime dt)
{
var year = dt.Year;
var date = dt.Date;

switch (dt.Month)
{
case 1:
if (NewYear(year) == dt)
if (NewYear(year) == date)
return true;
break;
case 3:
case 4:
if (MaundyThursday(year) == dt)
if (MaundyThursday(year) == date)
return true;
if (GoodFriday(year) == dt)
if (GoodFriday(year) == date)
return true;
if (HolidayCalculator.GetEaster(year) == dt)
if (HolidayCalculator.GetEaster(year) == date)
return true;
if (EasterMonday(year) == dt)
if (EasterMonday(year) == date)
return true;
if (Ascension(year) == dt)
if (Ascension(year) == date)
return true;
break;
case 5:
if (LabourDay(year) == dt)
if (LabourDay(year) == date)
return true;
if (ConstitutionDay(year) == dt)
if (ConstitutionDay(year) == date)
return true;
if (Ascension(year) == dt)
if (Ascension(year) == date)
return true;
if (WhitSunday(year) == dt)
if (WhitSunday(year) == date)
return true;
if (WhitMonday(year) == dt)
if (WhitMonday(year) == date)
return true;
break;
case 6:
if (Ascension(year) == dt)
if (Ascension(year) == date)
return true;
if (WhitSunday(year) == dt)
if (WhitSunday(year) == date)
return true;
if (WhitMonday(year) == dt)
if (WhitMonday(year) == date)
return true;
break;
case 12:
if (Christmas(year) == dt)
if (Christmas(year) == date)
return true;
if (BoxingDay(year) == dt)
if (BoxingDay(year) == date)
return true;
break;
}
Expand Down
6 changes: 3 additions & 3 deletions src/PublicHoliday/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Martin Willey")]
[assembly: AssemblyProduct("Holiday")]
[assembly: AssemblyCopyright("Copyright © Martin Willey 2015")]
[assembly: AssemblyCopyright("Copyright © Martin Willey 2016")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

Expand All @@ -32,5 +32,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.3.0.0")]
[assembly: AssemblyFileVersion("1.3.0.0")]
[assembly: AssemblyVersion("1.3.1.0")]
[assembly: AssemblyFileVersion("1.3.1.0")]
2 changes: 1 addition & 1 deletion src/PublicHoliday/PublicHoliday.nuspec
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<releaseNotes>v1.2 Adds NorwayPublicHoliday.</releaseNotes>
<copyright>Copyright 2015</copyright>
<copyright>Copyright 2016</copyright>
<tags>Holiday</tags>
</metadata>
</package>
Loading

0 comments on commit 84ffa4f

Please sign in to comment.