@@ -49,57 +49,57 @@ pub fn local_time(
4949 microsecond : usize ,
5050) -> ( usize , usize , usize , usize , usize , usize , usize ) {
5151 let mut year: usize = EPOCH_YEAR as usize ;
52- let mut seconds: isize = unix_time. floor ( ) as isize ;
52+ let mut seconds: i64 = unix_time. floor ( ) as i64 ;
5353
5454 // Shift to a base year that is 400-year aligned.
5555 if seconds >= 0 {
56- seconds -= ( 10957 * SECS_PER_DAY as usize ) as isize ;
56+ seconds -= 10957 * SECS_PER_DAY as i64 ;
5757 year += 30 ; // == 2000
5858 } else {
59- seconds += ( ( 146_097 - 10957 ) * SECS_PER_DAY as usize ) as isize ;
59+ seconds += ( 146_097 - 10957 ) * SECS_PER_DAY as i64 ;
6060 year -= 370 ; // == 1600
6161 }
6262
63- seconds += utc_offset;
63+ seconds += utc_offset as i64 ;
6464
6565 // Handle years in chunks of 400/100/4/1
66- year += 400 * ( seconds / SECS_PER_400_YEARS as isize ) as usize ;
67- seconds %= SECS_PER_400_YEARS as isize ;
66+ year += 400 * ( seconds / SECS_PER_400_YEARS as i64 ) as usize ;
67+ seconds %= SECS_PER_400_YEARS as i64 ;
6868 if seconds < 0 {
69- seconds += SECS_PER_400_YEARS as isize ;
69+ seconds += SECS_PER_400_YEARS as i64 ;
7070 year -= 400 ;
7171 }
7272
7373 let mut leap_year = 1 ; // 4-century aligned
74- let mut sec_per_100years = SECS_PER_100_YEARS [ leap_year] as isize ;
74+ let mut sec_per_100years = SECS_PER_100_YEARS [ leap_year] . try_into ( ) . unwrap ( ) ;
7575
7676 while seconds >= sec_per_100years {
7777 seconds -= sec_per_100years;
7878 year += 100 ;
7979 leap_year = 0 ; // 1-century, non 4-century aligned
80- sec_per_100years = SECS_PER_100_YEARS [ leap_year] as isize ;
80+ sec_per_100years = SECS_PER_100_YEARS [ leap_year] . try_into ( ) . unwrap ( ) ;
8181 }
8282
83- let mut sec_per_4years = SECS_PER_4_YEARS [ leap_year] as isize ;
83+ let mut sec_per_4years = SECS_PER_4_YEARS [ leap_year] . into ( ) ;
8484 while seconds >= sec_per_4years {
8585 seconds -= sec_per_4years;
8686 year += 4 ;
8787 leap_year = 1 ; // 4-year, non century aligned
88- sec_per_4years = SECS_PER_4_YEARS [ leap_year] as isize ;
88+ sec_per_4years = SECS_PER_4_YEARS [ leap_year] . into ( ) ;
8989 }
9090
91- let mut sec_per_year = SECS_PER_YEAR [ leap_year] as isize ;
91+ let mut sec_per_year = SECS_PER_YEAR [ leap_year] . into ( ) ;
9292 while seconds >= sec_per_year {
9393 seconds -= sec_per_year;
9494 year += 1 ;
9595 leap_year = 0 ; // non 4-year aligned
96- sec_per_year = SECS_PER_YEAR [ leap_year] as isize ;
96+ sec_per_year = SECS_PER_YEAR [ leap_year] . into ( ) ;
9797 }
9898
9999 // Handle months and days
100100 let mut month = TM_DECEMBER + 1 ;
101- let mut day: usize = ( seconds / ( SECS_PER_DAY as isize ) + 1 ) as usize ;
102- seconds %= SECS_PER_DAY as isize ;
101+ let mut day: usize = ( seconds / ( SECS_PER_DAY as i64 ) + 1 ) as usize ;
102+ seconds %= SECS_PER_DAY as i64 ;
103103
104104 let mut month_offset: usize ;
105105 while month != ( TM_JANUARY + 1 ) {
@@ -113,10 +113,10 @@ pub fn local_time(
113113 }
114114
115115 // Handle hours, minutes and seconds
116- let hour: usize = ( seconds / SECS_PER_HOUR as isize ) as usize ;
117- seconds %= SECS_PER_HOUR as isize ;
118- let minute: usize = ( seconds / SECS_PER_MIN as isize ) as usize ;
119- let second: usize = ( seconds % SECS_PER_MIN as isize ) as usize ;
116+ let hour: usize = ( seconds / SECS_PER_HOUR as i64 ) as usize ;
117+ seconds %= SECS_PER_HOUR as i64 ;
118+ let minute: usize = ( seconds / SECS_PER_MIN as i64 ) as usize ;
119+ let second: usize = ( seconds % SECS_PER_MIN as i64 ) as usize ;
120120
121121 ( year, month, day, hour, minute, second, microsecond)
122122}
0 commit comments