From 1f1d2ba0bdb1b41dcbd269b9770e1b337c43defc Mon Sep 17 00:00:00 2001 From: zxj Date: Fri, 20 Oct 2023 18:08:54 +0800 Subject: [PATCH] add set_nano --- Cargo.toml | 2 +- src/datetime.rs | 13 +++++++++++-- tests/datetime.rs | 20 ++++++++++++++++++++ 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index e8f9ebb..3df68ac 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fastdate" -version = "0.3.5" +version = "0.3.6" edition = "2021" description = "Rust fast date carte" readme = "Readme.md" diff --git a/src/datetime.rs b/src/datetime.rs index c49304f..7469cb4 100644 --- a/src/datetime.rs +++ b/src/datetime.rs @@ -307,8 +307,8 @@ impl DateTime { /// stand "0000-00-00 00:00:00.000000000" pub fn display_stand(&self) -> String { - let mut v =self.display(false); - v.replace_range((10..11)," "); + let mut v = self.display(false); + v.replace_range(10..11, " "); v } @@ -392,6 +392,15 @@ impl DateTime { } len } + + pub fn set_nano(mut self, nano: u32) -> Self { + let v = self.nano(); + if nano != v { + self = self.sub(Duration::from_nanos(v as u64)); + self = self.add(Duration::from_micros(nano as u64)); + } + self + } } impl Add for DateTime { diff --git a/tests/datetime.rs b/tests/datetime.rs index 187276d..3a05201 100644 --- a/tests/datetime.rs +++ b/tests/datetime.rs @@ -355,6 +355,7 @@ fn test_display_datetime() { let v = epoch.display(false); assert_eq!(v, "2000-01-01T01:01:11.000001233"); } + #[test] fn test_display_stand() { let epoch = fastdate::DateTime::from((Date { @@ -370,3 +371,22 @@ fn test_display_stand() { let v = epoch.display_stand(); assert_eq!(v, "2000-01-01 01:01:11.000001233"); } + +#[test] +fn test_set_micro() { + let mut dt = fastdate::DateTime::from((Date { + day: 1, + mon: 1, + year: 2000, + }, Time { + nano: 1233, + sec: 11, + minute: 1, + hour: 1, + })); + dt = dt.set_nano(0); + assert_eq!(dt.display_stand(), "2000-01-01 01:01:11"); + + dt = dt.set_nano(1); + assert_eq!(dt.display_stand(), "2000-01-01 01:01:11.000001"); +}