我正在组织一个快速的下一个收集日期检查器,可以做一点帮助!
基本上,我们总是在周五收集,但仅限于一年中的奇数周。唯一的例外是如果它是一个包含英国公共/银行假日的一周 - 在这种情况下,收集将在星期六。
这是我到目前为止所拥有的 -
$weekNumber = date("W");
$thisfriday = new DateTime();
$thisfriday->modify('this friday');
$nextfriday = new DateTime();
$nextfriday->modify('this friday +1 weeks');
if($weekNumber &1) {
echo $thisfriday->format('l d F');
} else {
echo $nextfriday->format('l d F');
}
银行假日周的任何提示?
谢谢!
答案 0 :(得分:0)
如果你正在做一个自定义的PHP日历,你应该手工完成,创建一系列的银行假期,这可能对你很有帮助:https://en.wikipedia.org/wiki/List_of_holidays_by_country。
在PHP的官方文档中,每年都会有一个脚本来获取英国银行的圣日(请点击此处:http://php.net/manual/en/ref.calendar.php):
function calculateBankHolidays($yr) {
$bankHols = Array();
// New year's:
switch ( date("w", strtotime("$yr-01-01 12:00:00")) ) {
case 6:
$bankHols[] = "$yr-01-03";
break;
case 0:
$bankHols[] = "$yr-01-02";
break;
default:
$bankHols[] = "$yr-01-01";
}
// Good friday:
$bankHols[] = date("Y-m-d", strtotime( "+".(easter_days($yr) - 2)." days", strtotime("$yr-03-21 12:00:00") ));
...
我认为最好的近似之一是使用现有库或使用 PEAR 包(http://pear.php.net/package/Date_Holidays)然后你可以做类似的事情(将德国改为英国):
<?php
require_once "Date/Holidays.php";
$germany = &Date_Holidays::factory('Germany', 2004, 'en_EN');
if (Date_Holidays::isError($germany)) {
die('Factory was unable to produce driver-object');
}
$easter = &$germany->getHoliday('easter', 'de_DE');
if (!Date_Holidays::isError($easter)) {
print_r($easter->toArray());
}
?>
希望它有所帮助!