taking local timezone as default

This commit is contained in:
Loïc Riegel 2025-04-04 18:26:43 +02:00
parent 3c75eb077d
commit f9b6b245b7

View File

@ -690,23 +690,19 @@ fn merge_record(record: &Record, head: Span, span: Span) -> Value {
}, },
}; };
let offset = match parse_timezone_from_record(record, &head, &span) { let offset: FixedOffset = match record.get("timezone") {
Ok(value) => value, Some(timezone) => {
Err(err) => { let offset = match parse_timezone_from_record(timezone, &head, &span) {
return err; Ok(value) => value,
Err(err) => {
return err;
}
};
offset
} }
None => now.offset().to_owned(),
}; };
dbg!(&year);
dbg!(&month);
dbg!(&day);
dbg!(&hour);
dbg!(&minute);
dbg!(&second);
dbg!(&millisecond);
dbg!(&microsecond);
dbg!(&nanosecond);
let total_nanoseconds = nanosecond + microsecond * 1_000 + millisecond * 1_000_000; let total_nanoseconds = nanosecond + microsecond * 1_000 + millisecond * 1_000_000;
let date = match NaiveDate::from_ymd_opt(year, month, day) { let date = match NaiveDate::from_ymd_opt(year, month, day) {
@ -792,39 +788,36 @@ fn parse_value_from_record_as_u32(
} }
fn parse_timezone_from_record( fn parse_timezone_from_record(
record: &Record, timezone: &Value,
head: &Span, head: &Span,
span: &Span, span: &Span,
) -> Result<FixedOffset, Value> { ) -> Result<FixedOffset, Value> {
match record.get("timezone") { match timezone {
Some(val) => match val { Value::String { val, internal_span } => {
Value::String { val, internal_span } => { let offset: FixedOffset = match val.parse() {
let offset: FixedOffset = match val.parse() { Ok(offset) => offset,
Ok(offset) => offset, Err(_) => {
Err(_) => { return Err(Value::error(
return Err(Value::error( ShellError::IncorrectValue {
ShellError::IncorrectValue { msg: "invalid timezone".to_string(),
msg: "invalid timezone".to_string(), val_span: *internal_span,
val_span: *internal_span, call_span: *head,
call_span: *head, },
}, *span,
*span, ))
)) }
} };
}; Ok(offset)
Ok(offset) }
} other => Err(Value::error(
other => Err(Value::error( ShellError::OnlySupportsThisInputType {
ShellError::OnlySupportsThisInputType { exp_input_type: "string".to_string(),
exp_input_type: "string".to_string(), wrong_type: other.get_type().to_string(),
wrong_type: other.get_type().to_string(), dst_span: *head,
dst_span: *head, src_span: other.span(),
src_span: other.span(), },
}, *span,
*span, )),
)),
},
None => Ok(FixedOffset::east_opt(0).expect("Should never fail")),
} }
} }