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");
     }
 }

Reply via email to