static function snapYear($dt, $direction) { if (!php_Boot::$skip_constructor) { switch ($direction) { case -1: return datetime__DateTime_DateTime_Impl_::yearStart($dt); break; case 1: $next = null; $time = datetime_utils_DateTimeUtils::addYear($dt, 1); $next = $time + 62135596800.0; return datetime__DateTime_DateTime_Impl_::yearStart($next); break; case 0: $next1 = datetime__DateTime_DateTime_Impl_::yearStart(datetime_utils_DateTimeSnapUtils_0($direction, $dt)); $previous = datetime__DateTime_DateTime_Impl_::yearStart($dt); if ($next1 - ($dt - 62135596800.0) > $dt - 62135596800.0 - $previous) { return $previous; } else { return $next1; } break; } } }
static function sub($this1, $period) { $time = null; switch ($period->index) { case 0: $n = _hx_deref($period)->params[0]; $time = datetime_utils_DateTimeUtils::addYear($this1 - 62135596800.0 + 62135596800.0, -$n); break; case 1: $n1 = _hx_deref($period)->params[0]; $time = datetime_utils_DateTimeUtils::addMonth($this1 - 62135596800.0 + 62135596800.0, -$n1); break; case 2: $n2 = _hx_deref($period)->params[0]; $time = $this1 - 62135596800.0 - $n2 * 86400; break; case 3: $n3 = _hx_deref($period)->params[0]; $time = $this1 - 62135596800.0 - $n3 * 3600; break; case 4: $n4 = _hx_deref($period)->params[0]; $time = $this1 - 62135596800.0 - $n4 * 60; break; case 5: $n5 = _hx_deref($period)->params[0]; $time = $this1 - 62135596800.0 - $n5; break; case 6: $n6 = _hx_deref($period)->params[0]; $time = $this1 - 62135596800.0 - $n6 * 7 * 86400; break; } return $time + 62135596800.0; }
static function addMonth($dt, $amount) { $month = null; $month = datetime_utils_DateTimeUtils_4($amount, $dt, $month) + $amount; if ($month >= 12) { $years = Std::int($month / 12); $time = datetime_utils_DateTimeUtils::addYear($dt, $years); $dt = $time + 62135596800.0; $month -= $years * 12; } else { if ($month < 0) { $years1 = Std::int($month / 12) - 1; $time1 = datetime_utils_DateTimeUtils::addYear($dt, $years1); $dt = $time1 + 62135596800.0; $month -= $years1 * 12; } } $isLeap = datetime__DateTime_DateTime_Impl_::isLeapYear($dt); $day = null; $value = null; $days1 = Std::int(($dt - 62135596800.0 - datetime__DateTime_DateTime_Impl_::yearStart($dt)) / 86400) + 1; $value = datetime_utils_DateTimeMonthUtils::getMonthDay($days1, datetime__DateTime_DateTime_Impl_::isLeapYear($dt)); $max = datetime_utils_DateTimeMonthUtils::days($month, $isLeap); if ($value < 1) { $day = 1; } else { if ($value > $max) { $day = $max; } else { $day = $value; } } return datetime__DateTime_DateTime_Impl_::yearStart($dt) + datetime_utils_DateTimeMonthUtils::toSeconds($month, $isLeap) + ($day - 1) * 86400 + Std::int(($dt - Math::ffloor($dt / 86400) * 86400) / 3600) * 3600 + Std::int(($dt - Math::ffloor($dt / 3600) * 3600) / 60) * 60 + Std::int($dt - Math::ffloor($dt / 60) * 60); }