#BUGFIX by exept
authorClaus Gittinger <cg@exept.de>
Sat, 09 Nov 2019 10:42:57 +0100
changeset 24893 373cc0ac5f71
parent 24892 2213eb56e0c7
child 24894 09ca874a6160
#BUGFIX by exept class: TimeDuration comment/format in: #asExactSeconds #seconds changed: #productFromTimeDuration: FIX: multiplying two timeDeltas does NOT give a timeDelta
TimeDuration.st
--- a/TimeDuration.st	Fri Nov 08 09:06:25 2019 +0100
+++ b/TimeDuration.st	Sat Nov 09 10:42:57 2019 +0100
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
 "
  COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
@@ -362,7 +364,7 @@
             ].
 
             "/ milli, micro, nano and pico
-            unitChar1 == $µ ifTrue:[ unitChar1 := $u].
+            unitChar1 == $µ ifTrue:[ unitChar1 := $u].
             uIdx := 'munp' indexOf:unitChar1.
             ((uIdx ~~ 0) and:[nextCh == $s]) ifTrue:[
                 unitChar1 == $m ifTrue:[
@@ -450,7 +452,7 @@
 
      TimeDuration readFrom:'1ms' -> 1ms 
      TimeDuration readFrom:'5us' 
-     TimeDuration readFrom:'5µs' 
+     TimeDuration readFrom:'5µs' 
      TimeDuration readFrom:'5ns' 
      TimeDuration readFrom:'5ps' 
      TimeDuration readFrom:'5005 ps' 
@@ -723,11 +725,11 @@
         ]
         
     "
-     (Duration fromString:'1m 5s 10ms') seconds
-     (Duration fromString:'1m 1s 10ms') getSeconds
-
-     (Duration days: 9 hours: 1 minutes: 2 seconds: 3) seconds
-     (Duration days: -9 hours: -1 minutes: -2 seconds: -3) seconds
+     (TimeDuration fromString:'1m 5s 10ms') seconds
+     (TimeDuration fromString:'1m 1s 10ms') getSeconds
+
+     (TimeDuration days: 9 hours: 1 minutes: 2 seconds: 3) seconds
+     (TimeDuration days: -9 hours: -1 minutes: -2 seconds: -3) seconds
     "
 
     "Modified (comment): / 21-09-2017 / 18:53:13 / cg"
@@ -1055,11 +1057,12 @@
     + (additionalPicoseconds / (1000 * 1000 * 1000 * 1000))  "/ picos as seconds.
 
     "
-     1.5 seconds asExactSeconds
+     1.5 milliSeconds asExactSeconds    
+     1.5 seconds asExactSeconds    
      40 seconds asExactSeconds
      40 milliseconds asExactSeconds
      40 microseconds asExactSeconds
-     40 nanoseconds asExactSeconds
+     40 nanoseconds asExactSeconds 
     "
 
     "Created: / 21-09-2017 / 18:52:26 / cg"
@@ -1585,8 +1588,16 @@
 productFromTimeDuration:aTimeDuration
     "return a new timeDuration"
 
-    |newMillis newPicos|
-
+    |t newMillis newPicos|
+
+    (t := Smalltalk at:#'Physic::Time') notNil ifTrue:[
+        ^ t dispatchProductFromAmount:(aTimeDuration asExactSeconds) 
+            into:t 
+            value:self asExactSeconds
+    ].
+
+    "/ the code below is completely bogus.
+    "/ a square-second is NOT a second!!
     newMillis := timeEncoding * aTimeDuration getMilliseconds.
     newPicos := (additionalPicoseconds ? 0) * (aTimeDuration additionalPicoseconds).
 
@@ -1594,9 +1605,11 @@
         setMilliseconds:newMillis additionalPicoseconds:newPicos
 
     "
-     (TimeDuration fromString:'1m') * (TimeDuration fromString:'10s') 
-     1 minutes * 10 seconds
-     10 * 1 minutes
+     1 minutes * 10 seconds 
+     10 * 1 minutes         
+     1 minutes * 5        
+     (TimeDuration fromString:'10s') * (TimeDuration fromString:'10s')  
+     (TimeDuration fromString:'10s') / (TimeDuration fromString:'10s')  
     "
 
     "Created: / 25-07-2018 / 21:11:40 / Stefan Vogel"
@@ -2098,7 +2111,7 @@
                     ] ifFalse:[
                         overAllMicros := self microseconds.
                         overAllMicros > 2 ifTrue:[
-                            fmt := fmt , '%(micro)µs'.
+                            fmt := fmt , '%(micro)µs'.
                         ] ifFalse:[
                             overAllNanos := self nanoseconds.
                             overAllNanos > 2 ifTrue:[