Skip to content

Commit 32e973d

Browse files
authored
Chrono deprecations (#4748)
1 parent cb793a5 commit 32e973d

File tree

1 file changed

+12
-18
lines changed

1 file changed

+12
-18
lines changed

arrow-cast/src/parse.rs

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -189,13 +189,11 @@ pub fn string_to_datetime<T: TimeZone>(
189189
let parser = TimestampParser::new(bytes);
190190
let date = parser.date().ok_or_else(|| err("error parsing date"))?;
191191
if bytes.len() == 10 {
192-
let offset = timezone.offset_from_local_date(&date);
193-
let offset = offset
192+
let datetime = date.and_time(NaiveTime::from_hms_opt(0, 0, 0).unwrap());
193+
return timezone
194+
.from_local_datetime(&datetime)
194195
.single()
195-
.ok_or_else(|| err("error computing timezone offset"))?;
196-
197-
let time = NaiveTime::from_hms_opt(0, 0, 0).unwrap();
198-
return Ok(DateTime::from_local(date.and_time(time), offset));
196+
.ok_or_else(|| err("error computing timezone offset"));
199197
}
200198

201199
if !parser.test(10, b'T') && !parser.test(10, b't') && !parser.test(10, b' ') {
@@ -213,28 +211,24 @@ pub fn string_to_datetime<T: TimeZone>(
213211
}
214212

215213
if bytes.len() <= tz_offset {
216-
let offset = timezone.offset_from_local_datetime(&datetime);
217-
let offset = offset
214+
return timezone
215+
.from_local_datetime(&datetime)
218216
.single()
219-
.ok_or_else(|| err("error computing timezone offset"))?;
220-
return Ok(DateTime::from_local(datetime, offset));
217+
.ok_or_else(|| err("error computing timezone offset"));
221218
}
222219

223220
if bytes[tz_offset] == b'z' || bytes[tz_offset] == b'Z' {
224-
let offset = timezone.offset_from_local_datetime(&datetime);
225-
let offset = offset
226-
.single()
227-
.ok_or_else(|| err("error computing timezone offset"))?;
228-
return Ok(DateTime::from_utc(datetime, offset));
221+
return Ok(timezone.from_utc_datetime(&datetime));
229222
}
230223

231224
// Parse remainder of string as timezone
232225
let parsed_tz: Tz = s[tz_offset..].trim_start().parse()?;
233-
let offset = parsed_tz.offset_from_local_datetime(&datetime);
234-
let offset = offset
226+
let parsed = parsed_tz
227+
.from_local_datetime(&datetime)
235228
.single()
236229
.ok_or_else(|| err("error computing timezone offset"))?;
237-
Ok(DateTime::<Tz>::from_local(datetime, offset).with_timezone(timezone))
230+
231+
Ok(parsed.with_timezone(timezone))
238232
}
239233

240234
/// Accepts a string in RFC3339 / ISO8601 standard format and some

0 commit comments

Comments
 (0)