kra*_*r65 2 php date date-format dateinterval
我有这个功能,可以为某些东西设置过期.该函数接受一些具有默认值的参数.我是这样做的:
public static function blockAccount(
$id,
$years = 0,
$months = 0,
$days = 0,
$hours = 0,
$minutes = 0,
$seconds = 0
) {
// Determine expiry date for the block
$date = Text::getDateTime();
$date->add(
new \DateInterval(
'P' . $years . 'Y'
. $months . 'M'
. $days . 'D'
. $hours . 'H'
. $minutes . 'I'
. $seconds . 'S'
)
);
$blockedExpiryDate = $date->format(Filter::FORMAT_MICRO_TIMESTAMP);
$accountModel = AccountModel::selectById($id);
$accountModel->setBlockedExpiryDate($blockedExpiryDate);
$accountModel->save();
}
Run Code Online (Sandbox Code Playgroud)
当只用年份设置运行时,我收到一个错误,说:DateInterval::__construct(): Unknown or bad format (P1Y0M0D0H0I0S).
我在这里做错了什么想法?
Joh*_*nde 10
你错过了T之前的时间要素和分钟应该M没有I:
如果持续时间包含时间元素,则说明书的该部分前面带有字母T.
$date->add(
new \DateInterval(
'P' . $years . 'Y'
. $months . 'M'
. $days . 'DT'
. $hours . 'H'
. $minutes . 'M'
. $seconds . 'S'
)
);
Run Code Online (Sandbox Code Playgroud)
您可能还希望使代码更智能,并简单地省略任何具有零值的日期/时间元素.