我正在尝试实现一个结算日期算法,以检查我所在地区是否有使用php / mysql构建的小型交易应用程序的本地公共假期。我将所有本地公共假期日期整齐地存储在数据库中,然后使用变量输出。
应用程序应检查当前日期,然后添加三个工作日(减去周末),因为我国的结算周期遵循所有交易的t + 3结算规则。这要求如果结算应在公共假日或周末进行,则应用程序应比较db表中的日期,然后将新的工作日设置为结算日期。
有人可以帮我解决我可能缺少的东西吗?请在下面找到代码:
<?php
$rsd = date ( 'Ymd' , strtotime ( '3 weekdays' ) );
$phd = $row_public_holidays['date'];
if ($rsd == $phd) {
echo date ( 'Ymd' , strtotime ( '4 weekdays' ) );
} else {
echo date ( 'Ymd' , strtotime ( '3 weekdays' ) );
}
?>
答案 0 :(得分:0)
如果您需要date
的输出具有8位数字,则可以将格式字符串从Ymj
更新为Ymd
。将最后一个字符从j
更改为d
从显示:
一个月中的日期,不带前导零
收件人:
每月的某天,两位数字,前导零
根据date
(http://php.net/manual/en/function.date.php)的文档。
对strtotime
的调用将执行计算,并返回一个整数,该整数表示自确定(或提供的)时区(http://php.net/manual/en/function.strtotime.php)中的纪元以来的秒数。对date
的调用只是根据提供的格式(http://php.net/manual/en/function.date.php)将整数格式化为字符串。
所以:
$time = strtotime('4 weekdays');
var_dump($time);
$date1 = date('Ymj', $time);
var_dump($date1);
$date2 = date('Ymd', $time);
var_dump($date2);
输出:
int(1533600000)
string(7) "2018087"
string(8) "20180807"
在此示例中,对date
的调用不会更改$time
的值。