Skip to content

Commit c948274

Browse files
committed
Parse datetime with T separator and digit offset
Parse a datetime with T separator between date and time, single digit timezone offset, and no space between time and offset.
1 parent b209341 commit c948274

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

src/lib.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ mod format {
7878
pub const YYYYMMDDHHMM_ZULU_OFFSET: &str = "%Y%m%d%H%MZ%z";
7979
pub const YYYYMMDDHHMM_HYPHENATED_OFFSET: &str = "%Y-%m-%d %H:%M %z";
8080
pub const YYYYMMDDHHMMSS_HYPHENATED_OFFSET: &str = "%Y-%m-%d %H:%M:%S %#z";
81+
pub const YYYYMMDDHHMMSS_T_SEP_HYPHENATED_OFFSET: &str = "%Y-%m-%dT%H:%M:%S%#z";
8182
pub const YYYYMMDDHHMMS_T_SEP: &str = "%Y-%m-%dT%H:%M:%S";
8283
pub const UTC_OFFSET: &str = "UTC%#z";
8384
pub const ZULU_OFFSET: &str = "Z%#z";
@@ -165,6 +166,7 @@ pub fn parse_datetime_at_date<S: AsRef<str> + Clone>(
165166
format::YYYYMMDDHHMM_OFFSET,
166167
format::YYYYMMDDHHMM_HYPHENATED_OFFSET,
167168
format::YYYYMMDDHHMMSS_HYPHENATED_OFFSET,
169+
format::YYYYMMDDHHMMSS_T_SEP_HYPHENATED_OFFSET,
168170
format::YYYYMMDDHHMM_UTC_OFFSET,
169171
format::YYYYMMDDHHMM_ZULU_OFFSET,
170172
] {
@@ -321,6 +323,14 @@ mod tests {
321323
assert_eq!(actual.unwrap().timestamp(), TEST_TIME);
322324
}
323325

326+
#[test]
327+
fn test_t_sep_single_digit_offset_no_space() {
328+
env::set_var("TZ", "UTC");
329+
let dt = "2021-02-14T22:37:47-8";
330+
let actual = parse_datetime(dt);
331+
assert_eq!(actual.unwrap().timestamp(), TEST_TIME);
332+
}
333+
324334
#[test]
325335
fn invalid_formats() {
326336
let invalid_dts = vec!["NotADate", "202104", "202104-12T22:37:47"];

0 commit comments

Comments
 (0)