<?php
namespace
Cron;
class
HoursField
extends
AbstractField
{
public
function
isSatisfiedBy(\DateTime
$date
,
$value
)
{
return
$this
->isSatisfied(
$date
->format(
'H'
),
$value
);
}
public
function
increment(\DateTime
$date
,
$invert
= false)
{
$timezone
=
$date
->getTimezone();
$localMinutes
=
$date
->format(
'i'
);
$date
->setTimezone(
new
\DateTimeZone(
'UTC'
));
$utcMinutes
=
$date
->format(
'i'
);
$minDiff
=
$localMinutes
-
$utcMinutes
;
if
(
$invert
) {
$date
->modify(
'-1 hour'
);
$date
->setTime(
$date
->format(
'H'
), 59 -
$minDiff
);
}
else
{
$date
->modify(
'+1 hour'
);
$date
->setTime(
$date
->format(
'H'
), 0 -
$minDiff
);
}
$date
->setTimezone(
$timezone
);
return
$this
;
}
public
function
validate(
$value
)
{
return
(bool) preg_match(
'/^[\*,\/\-0-9]+$/'
,
$value
);
}
}