我正在与一个购物网站工作,通过英国邮件交付托运货物,预计送货时间为7天。
因此,我已将预期交货日期定为:
// gives me the date 7 days into the future
$expectedDate=Date('Y:m:d', strtotime("+7 days"));
在我向其传递日期的英国邮件API返回以下错误之前,一切正常:
[Errors] => stdClass Object
(
[UKMWebError] => stdClass Object
(
[Code] => 8200
[Description] => Validation failed. 05/06/2012 is not a working day.
)
)
例如,05/06/2012是一个星期二,但我不知道这是一个假期。因为是假日,所以被拒绝了。
我想做的是:
"05/06/2012"
)。
有可能吗?有人能举个例子吗??
发布于 2012-05-29 07:15:59
以下代码显示,除周末外,交货日期为5-7天。
$working_day = date('N');
if($working_day < 5)
{
$delivery_date = date('Y/m/d', strtotime("+7 days"));
}
else
{
if($working_day == 6)
$delivery_date = date('Y/m/d', strtotime("+6 days"));
if($working_day == 7)
$delivery_date = date('Y/m/d', strtotime("+5 days"));
}
发布于 2012-05-29 07:23:18
$holidays = array('05/06/12');
$deliverable_days = 1;
$any_day = 1;
while($deliverable_days<=7)
{
$ts= strtotime("+{$any_day} days");
$this_date = date('d/m/Y',$ts);
$this_day = date('w',$ts);
if(!in_array($this_date,$holidays) && !in_array($this_day,array(0,6)))
{
$deliverable_days++;
}
if($deliverable_days==7)
{
break;
}
$any_day++;
}
发布于 2012-05-29 07:09:36
这不会解决您的问题,但是您可以使用它来检查周末、假日或工作日的未来日期:
// M/d/Y
$holidays = array(
'05/06/2012',
'10/07/2012',
);
$expectedDate = strtotime("+7 days");
if (in_array(date('l', $expectedDate), array('Saturday', 'Sunday'))) {
echo 'weekend';
} else if (in_array(date('m/d/Y', $expectedDate), $holidays)) {
echo 'holiday';
} else {
echo date('Y:m:d', $expectedDate) . ' is working day!';
}
更新:
Pinaldesai的回答很好。它可以简化如下:
$offset = date('N') < 5 ? 7 : (5 + (7 - date('N')));
$delivery_date = date('Y/m/d', "+$offset days"));
https://stackoverflow.com/questions/10794413
复制相似问题