From e4ec60878187360370268e5e5c51f7b31dd47336 Mon Sep 17 00:00:00 2001 From: MengshengWu Date: Fri, 28 Jun 2024 22:01:00 +0800 Subject: [PATCH] date: fix date get timezone error while set utc time (#6495) --- src/uu/date/src/date.rs | 6 ++---- tests/by-util/test_date.rs | 10 ++++++++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/uu/date/src/date.rs b/src/uu/date/src/date.rs index 5d6e8fd22e0..02737dca28e 100644 --- a/src/uu/date/src/date.rs +++ b/src/uu/date/src/date.rs @@ -227,11 +227,9 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { Box::new(iter) } DateSource::Human(relative_time) => { - // Get the current DateTime for things like "1 year ago" - let current_time = DateTime::::from(Local::now()); - // double check the result is overflow or not of the current_time + relative_time + // Double check the result is overflow or not of the current_time + relative_time // it may cause a panic of chrono::datetime::DateTime add - match current_time.checked_add_signed(relative_time) { + match now.checked_add_signed(relative_time) { Some(date) => { let iter = std::iter::once(Ok(date)); Box::new(iter) diff --git a/tests/by-util/test_date.rs b/tests/by-util/test_date.rs index 16a01c6558d..13c340b071b 100644 --- a/tests/by-util/test_date.rs +++ b/tests/by-util/test_date.rs @@ -141,6 +141,16 @@ fn test_date_utc() { } } +#[test] +fn test_date_utc_issue_6495() { + new_ucmd!() + .arg("-u") + .arg("-d") + .arg("@0") + .succeeds() + .stdout_is("Thu Jan 1 00:00:00 1970\n"); +} + #[test] fn test_date_format_y() { let scene = TestScenario::new(util_name!());