Server : Apache System : Linux cs317.bluehost.com 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64 User : andertr9 ( 1047) PHP Version : 8.2.18 Disable Function : NONE Directory : /lib64/perl5/vendor_perl/ |
Upload File : |
package DateTime; use strict; use warnings; use DateTime::LeapSecond; sub _normalize_tai_seconds { return if grep { $_ == INFINITY() || $_ == NEG_INFINITY() } @_[ 1, 2 ]; # This must be after checking for infinity, because it breaks in # presence of use integer ! use integer; my $adj; if ( $_[2] < 0 ) { $adj = ( $_[2] - 86399 ) / 86400; } else { $adj = $_[2] / 86400; } $_[1] += $adj; $_[2] -= $adj * 86400; } sub _normalize_leap_seconds { # args: 0 => days, 1 => seconds my $delta_days; use integer; # rough adjust - can adjust many days if ( $_[2] < 0 ) { $delta_days = ( $_[2] - 86399 ) / 86400; } else { $delta_days = $_[2] / 86400; } my $new_day = $_[1] + $delta_days; my $delta_seconds = ( 86400 * $delta_days ) + DateTime::LeapSecond::leap_seconds($new_day) - DateTime::LeapSecond::leap_seconds( $_[1] ); $_[2] -= $delta_seconds; $_[1] = $new_day; # fine adjust - up to 1 day my $day_length = DateTime::LeapSecond::day_length($new_day); if ( $_[2] >= $day_length ) { $_[2] -= $day_length; $_[1]++; } elsif ( $_[2] < 0 ) { $day_length = DateTime::LeapSecond::day_length( $new_day - 1 ); $_[2] += $day_length; $_[1]--; } } 1;