gpt4 book ai didi

php - 如何获得埃及和印度尼西亚的公共(public)假期

转载 作者:搜寻专家 更新时间:2023-10-31 21:07:33 35 4
gpt4 key购买 nike

到目前为止,我已经能够使用以下引用资料在英国和美国的 PHP 国定假日中进行计算。

http://php.net/manual/en/ref.calendar.php

http://damianoferrari.com/calculating-u-s-federal-holidays-with-php/

我似乎无法找到如何计算出埃及和印度尼西亚的国定假日。

谁能指出我正确的方向?

我要求它返回数组中提供的给定年份的所有假期。

public function getHolidayDates($startDate,$endDate){
$s_y = date('Y',strtotime($startDate) );
$e_y = date('Y',strtotime($endDate) );
$holidays = array();

if($this->site == "uk"){

for ($i = $s_y; $i < $e_y; $i++) {
$holidays[] = $this->calculateBankHolidays($i);
}
$merged = array();
foreach($holidays as $value) {
$merged = array_merge($value,$merged);
}
$holidays = $merged;

}elseif($this->site== "usa"){
for ($i = $s_y; $i < $e_y; $i++) {
$us_holidays = new US_Federal_Holidays($i);

foreach ($us_holidays->get_list() as $value)
{
$holidays[] = date("Y-m-d", $value["timestamp"]);
}
}
//Yii::log(print_r($holidays,true));
}
return $holidays;
}

最佳答案

这样做的一种方法是从网上某个地方获取假期列表并将其添加到您的代码中,然后以与美国联邦假期相同的方式循环遍历它timeanddate 网站有许多国家/地区的假期。

http://www.timeanddate.com/holidays/indonesia/

你可以尝试这样的事情来获取假期列表

function getHolidays($country){
//Url of Site with list
$url='http://www.timeanddate.com/holidays/'.$country.'/';
//Use curl to get the page
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$html = curl_exec($ch);
curl_close($ch);
$dom = new DOMDocument();
# The @ before the method call suppresses any warnings that
# loadHTML might throw because of invalid HTML in the page.
@$dom->loadHTML($html);
$holidays=array();
$items = $dom->getElementsByTagName('tr');
function tdrows($elements)
{
$str = "";
foreach ($elements as $element)
{
$str .= $element->nodeValue . ", ";
}
//This pplaces the items into an array
$tempArray=explode(',',$str);
//This gets rid of empty array elements
unset($tempArray[4]);
unset($tempArray[5]);
return $tempArray;
}
foreach ($items as $node)
{
$holidays[]=tdrows($node->childNodes);
}
//The first and secone items in the array were the titles of the table and a blank row
//so we unset them
unset($holidays[0]);
unset($holidays[1]);
//then reindex the array
$holidays = array_values($holidays);
return $holidays;
}

使用该函数,您可以将一个国家/地区传递给该站点,它会返回一个包含该国家/地区所有假期的数组。

您可以像这样查看数组并将其复制出来并将其添加到您的代码中。

$indHols=getHolidays('indonesia');
echo "<pre>";
print_r($indHols);
echo "</pre>";

$eqyptHols=getHolidays('egypt');
echo "<pre>";
print_r($indHols);
echo "</pre>";

然后您可以调整输出数组以满足您的要求。显然,您不会在每个请求上持续运行此代码,您只会使用它来获取数组,以便将其添加到您的代码中。

虽然这可能适用于时间和日期网站上的所有国家/地区。

关于php - 如何获得埃及和印度尼西亚的公共(public)假期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29917482/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com