这是我创建它的功能。它预计一年是一个参数,并且会在当年返回所有瑞典红日(非商业日)的哈希值。
请注意,它不会返回总是星期六或星期日的任何假期,因为周六和周日无论如何都是非商业活动。
Requires Date::Calc and Date::Easter
sub GetHoliDayList() {
$yeartocheck = $_[0];
$holiday{'1-1'} = '1';
$holiday{'1-6'} = '1';
$holiday{'5-1'} = '1';
$holiday{'6-6'} = '1';
$holiday{'6-24'} = '1';
$holiday{'12-24'} = '1';
$holiday{'12-25'} = '1';
$holiday{'12-26'} = '1';
$holiday{'12-31'} = '1';
($eastermonth, $easterday) = gregorian_easter($yeartocheck);
$hea = int($eastermonth)."-".int(int($easterday) - 2);
$heb = int($eastermonth)."-".int(int($easterday) + 1);
$holiday{$hea} = '1';
$holiday{$heb} = '1';
($year,$christskytravellermonth,$christskytravellerday) = Add_Delta_YMD($yeartocheck,$eastermonth,$easterday, 0,0,39);
$chstv = int($christskytravellermonth)."-".int($christskytravellerday);
$holiday{$chstv} = '1';
if (Day_of_Week($yeartocheck,6,19) == 5) {
$holiday{'6-19'} = '1';
}
if (Day_of_Week($yeartocheck,6,20) == 5) {
$holiday{'6-20'} = '1';
}
if (Day_of_Week($yeartocheck,6,21) == 5) {
$holiday{'6-21'} = '1';
}
if (Day_of_Week($yeartocheck,6,22) == 5) {
$holiday{'6-22'} = '1';
}
if (Day_of_Week($yeartocheck,6,23) == 5) {
$holiday{'6-23'} = '1';
}
if (Day_of_Week($yeartocheck,6,24) == 5) {
$holiday{'6-24'} = '1';
}
if (Day_of_Week($yeartocheck,6,25) == 5) {
$holiday{'6-25'} = '1';
}
return %holiday;
}
我投票结束这个问题作为题外话,因为它是关于如何确定瑞典假期的日期,而不是编程本身。 – Quentin
@Quentin这个问题与编程有关,并且在编程环境中对于创建应用程序的编程环境非常有用,这些应用程序使用日期执行某些操作,并且需要了解假期。 –
除非您需要计算历史上的任何一年,否则为未来10年制作假期的静态列表会更容易,并且要记下10年后更新列表的时间。如果您确实需要任意一年的数据,那么您只需查看每个假期的确定方式并实施算法即可。这是一个常见的任务,所以他们都应该很容易googleable。 – JJJ