This is an automated email from the ASF dual-hosted git repository.
tustvold pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git
The following commit(s) were added to refs/heads/master by this push:
new 2950d8b8fe Fix pretty hours duration display (#4591)
2950d8b8fe is described below
commit 2950d8b8fef2fb776905bcb35ac9c10aa5151aca
Author: Raphael Taylor-Davies <[email protected]>
AuthorDate: Sun Jul 30 17:15:38 2023 +0100
Fix pretty hours duration display (#4591)
---
arrow-cast/src/display.rs | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/arrow-cast/src/display.rs b/arrow-cast/src/display.rs
index b373891ecb..d15d57cf3c 100644
--- a/arrow-cast/src/display.rs
+++ b/arrow-cast/src/display.rs
@@ -601,6 +601,7 @@ macro_rules! duration_fmt {
let secs = secs - (mins * 60);
let mins = mins - (hours * 60);
+ let hours = hours - (days * 24);
write!($f, "{days} days {hours} hours {mins} mins {secs} secs")
}};
($f:ident, $v:expr, $scale:tt) => {{
@@ -613,6 +614,7 @@ macro_rules! duration_fmt {
let subsec = subsec - (secs * 10_i64.pow($scale));
let secs = secs - (mins * 60);
let mins = mins - (hours * 60);
+ let hours = hours - (days * 24);
match subsec.is_negative() {
true => {
write!(
@@ -1020,9 +1022,9 @@ mod tests {
assert_eq!(iso[3], "-PT0.000001S");
assert_eq!(pretty[3], "0 days 0 hours 0 mins -0.000001000 secs");
assert_eq!(iso[4], "P45DT50554.123456789S");
- assert_eq!(pretty[4], "45 days 1094 hours 2 mins 34.123456789 secs");
+ assert_eq!(pretty[4], "45 days 14 hours 2 mins 34.123456789 secs");
assert_eq!(iso[5], "-P45DT50554.123456789S");
- assert_eq!(pretty[5], "-45 days -1094 hours -2 mins -34.123456789
secs");
+ assert_eq!(pretty[5], "-45 days -14 hours -2 mins -34.123456789 secs");
let array = DurationMicrosecondArray::from(vec![
1,
@@ -1044,9 +1046,9 @@ mod tests {
assert_eq!(iso[3], "-PT0.001S");
assert_eq!(pretty[3], "0 days 0 hours 0 mins -0.001000 secs");
assert_eq!(iso[4], "P45DT50554.123456S");
- assert_eq!(pretty[4], "45 days 1094 hours 2 mins 34.123456 secs");
+ assert_eq!(pretty[4], "45 days 14 hours 2 mins 34.123456 secs");
assert_eq!(iso[5], "-P45DT50554.123456S");
- assert_eq!(pretty[5], "-45 days -1094 hours -2 mins -34.123456 secs");
+ assert_eq!(pretty[5], "-45 days -14 hours -2 mins -34.123456 secs");
let array = DurationMillisecondArray::from(vec![
1,
@@ -1068,9 +1070,9 @@ mod tests {
assert_eq!(iso[3], "-PT1S");
assert_eq!(pretty[3], "0 days 0 hours 0 mins -1.000 secs");
assert_eq!(iso[4], "P45DT50554.123S");
- assert_eq!(pretty[4], "45 days 1094 hours 2 mins 34.123 secs");
+ assert_eq!(pretty[4], "45 days 14 hours 2 mins 34.123 secs");
assert_eq!(iso[5], "-P45DT50554.123S");
- assert_eq!(pretty[5], "-45 days -1094 hours -2 mins -34.123 secs");
+ assert_eq!(pretty[5], "-45 days -14 hours -2 mins -34.123 secs");
let array = DurationSecondArray::from(vec![
1,
@@ -1092,8 +1094,8 @@ mod tests {
assert_eq!(iso[3], "-PT1000S");
assert_eq!(pretty[3], "0 days 0 hours -16 mins -40 secs");
assert_eq!(iso[4], "P45DT50554S");
- assert_eq!(pretty[4], "45 days 1094 hours 2 mins 34 secs");
+ assert_eq!(pretty[4], "45 days 14 hours 2 mins 34 secs");
assert_eq!(iso[5], "-P45DT50554S");
- assert_eq!(pretty[5], "-45 days -1094 hours -2 mins -34 secs");
+ assert_eq!(pretty[5], "-45 days -14 hours -2 mins -34 secs");
}
}