#BUGFIX by exept
class: TimeDuration
comment/format in:
#asExactSeconds
#seconds
changed: #productFromTimeDuration:
FIX: multiplying two timeDeltas does NOT give a timeDelta
--- 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:[