@@ -49,57 +49,57 @@ pub fn local_time(
49
49
microsecond : usize ,
50
50
) -> ( usize , usize , usize , usize , usize , usize , usize ) {
51
51
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 ;
53
53
54
54
// Shift to a base year that is 400-year aligned.
55
55
if seconds >= 0 {
56
- seconds -= ( 10957 * SECS_PER_DAY as usize ) as isize ;
56
+ seconds -= 10957 * SECS_PER_DAY as i64 ;
57
57
year += 30 ; // == 2000
58
58
} else {
59
- seconds += ( ( 146_097 - 10957 ) * SECS_PER_DAY as usize ) as isize ;
59
+ seconds += ( 146_097 - 10957 ) * SECS_PER_DAY as i64 ;
60
60
year -= 370 ; // == 1600
61
61
}
62
62
63
- seconds += utc_offset;
63
+ seconds += utc_offset as i64 ;
64
64
65
65
// 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 ;
68
68
if seconds < 0 {
69
- seconds += SECS_PER_400_YEARS as isize ;
69
+ seconds += SECS_PER_400_YEARS as i64 ;
70
70
year -= 400 ;
71
71
}
72
72
73
73
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 ( ) ;
75
75
76
76
while seconds >= sec_per_100years {
77
77
seconds -= sec_per_100years;
78
78
year += 100 ;
79
79
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 ( ) ;
81
81
}
82
82
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 ( ) ;
84
84
while seconds >= sec_per_4years {
85
85
seconds -= sec_per_4years;
86
86
year += 4 ;
87
87
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 ( ) ;
89
89
}
90
90
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 ( ) ;
92
92
while seconds >= sec_per_year {
93
93
seconds -= sec_per_year;
94
94
year += 1 ;
95
95
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 ( ) ;
97
97
}
98
98
99
99
// Handle months and days
100
100
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 ;
103
103
104
104
let mut month_offset: usize ;
105
105
while month != ( TM_JANUARY + 1 ) {
@@ -113,10 +113,10 @@ pub fn local_time(
113
113
}
114
114
115
115
// 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 ;
120
120
121
121
( year, month, day, hour, minute, second, microsecond)
122
122
}
0 commit comments