Skip to content

Commit fc2f028

Browse files
committed
fix format
1 parent aa99077 commit fc2f028

File tree

3 files changed

+14
-7
lines changed

3 files changed

+14
-7
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "fastdate"
3-
version = "0.3.26"
3+
version = "0.3.27"
44
edition = "2021"
55
description = "Rust fast date carte"
66
readme = "Readme.md"

src/datetime.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -167,19 +167,25 @@ impl DateTime {
167167
let offset = self.offset();
168168
let add_sub = if offset >= 0 { '+' } else { '-' };
169169
let mut result = String::with_capacity(fmt.len());
170-
let mut chars = fmt.chars();
171-
while let Some(c) = chars.next() {
172-
result.push(c);
170+
let chars = fmt.as_bytes();
171+
let mut index = 0;
172+
let mut iter = chars.iter();
173+
while let Some(c) = iter.next() {
174+
result.push(*c as char);
173175
if result.ends_with(".000000000") {
174176
for _ in 0..".000000000".len() {
175177
result.pop();
176178
}
177179
write!(result, ".{:09}", self.nano()).unwrap()
178180
} else if result.ends_with(".000000") {
181+
if (index + 3) < fmt.len() && chars[index + 1] == '0' as u8 && chars[index + 2] == '0' as u8 && chars[index + 3] == '0' as u8 {
182+
index += 1;
183+
continue;
184+
}
179185
for _ in 0..".000000".len() {
180186
result.pop();
181187
}
182-
write!(result, ".{:06}", self.nano() / 1000).unwrap()
188+
write!(result, ".{:06}", self.nano() / 1000).unwrap();
183189
} else if result.ends_with("+00:00") {
184190
for _ in 0.."+00:00".len() {
185191
result.pop();
@@ -218,6 +224,7 @@ impl DateTime {
218224
}
219225
write!(result, "{:02}", self.sec()).unwrap();
220226
}
227+
index += 1;
221228
}
222229
result
223230
}

tests/datetime.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -863,7 +863,7 @@ fn test_format() {
863863
year: 2000,
864864
},
865865
Time {
866-
nano: 123456000,
866+
nano: 123456789,
867867
sec: 11,
868868
minute: 1,
869869
hour: 1,
@@ -872,7 +872,7 @@ fn test_format() {
872872
let f = dt.format("YYYY-MM-DD/hh/mm/ss.000000");
873873
assert_eq!(f, "2000-01-01/01/01/11.123456");
874874
let f = dt.format("YYYY-MM-DD/hh/mm/ss.000000000");
875-
assert_eq!(f, "2000-01-01/01/01/11.123456000");
875+
assert_eq!(f, "2000-01-01/01/01/11.123456789");
876876
}
877877

878878
#[test]

0 commit comments

Comments
 (0)