--- a/TimeDuration.st Tue May 22 17:06:12 2018 +0200
+++ b/TimeDuration.st Tue May 22 17:06:27 2018 +0200
@@ -193,7 +193,8 @@
microseconds:microseconds
"return a new TimeDuration representing a duration of microseconds microseconds.
- Currently we do not support this (we round to millis), but maybe later..."
+ Now we support microseconds (even picoseconds) but we still round to milliseconds for backward
+ compatibility with the historic interface."
microseconds == 0 ifTrue:[^ TimeDurationZero].
^ self basicNew setMilliseconds:((microseconds / 1000) rounded).
@@ -203,6 +204,8 @@
TimeDuration microseconds:2500
TimeDuration microseconds:12345678900
"
+
+ "Modified (comment): / 22-05-2018 / 16:54:17 / Stefan Vogel"
!
milliseconds:m
@@ -2062,11 +2065,11 @@
micros isInteger ifTrue:[
timeEncoding := micros // 1000.
- additionalPicoseconds := (micros \\ 1000) * 1000 * 1000
+ additionalPicoseconds := (micros \\ 1000) * 1000000
] ifFalse:[
timeEncoding := micros // 1000.
restMicros := micros - (timeEncoding * 1000).
- additionalPicoseconds := (restMicros * 1000 * 1000) rounded asInteger.
+ additionalPicoseconds := (restMicros * 1000000) truncated.
].
"
@@ -2077,6 +2080,7 @@
"
"Modified: / 18-07-2007 / 13:44:16 / cg"
+ "Modified: / 22-05-2018 / 16:52:53 / Stefan Vogel"
!
setMilliseconds:millis
@@ -2087,10 +2091,11 @@
timeEncoding := millis.
] ifFalse:[
timeEncoding := millis // 1.
- additionalPicoseconds := ((millis \\ 1) * 1000 * 1000 * 1000) rounded asInteger.
+ additionalPicoseconds := ((millis \\ 1) * 1000000000) truncated.
]
"Modified: / 18-07-2007 / 13:44:16 / cg"
+ "Modified: / 22-05-2018 / 16:51:30 / Stefan Vogel"
!
setMilliseconds:millis additionalPicoseconds:picos
@@ -2106,18 +2111,19 @@
] ifFalse:[
newMillis := millis truncated.
rest := millis - newMillis.
- newPicos := (rest * 1000 * 1000 * 1000) rounded asInteger.
+ newPicos := (rest * 1000000000) truncated.
].
- picos ~~ 0 ifTrue:[
- newPicos := newPicos + picos.
- newMillis := newMillis + (newPicos // (1000*1000*1000)).
- newPicos := newPicos \\ (1000*1000*1000).
+ picos ~= 0 ifTrue:[
+ newPicos := (newPicos + picos) truncated.
+ newMillis := newMillis + (newPicos // 1000000000).
+ newPicos := newPicos \\ 1000000000.
].
timeEncoding := newMillis.
additionalPicoseconds := newPicos.
"Modified: / 18-07-2007 / 13:44:16 / cg"
+ "Modified: / 22-05-2018 / 16:55:53 / Stefan Vogel"
!
setNanoseconds:nanos
@@ -2132,8 +2138,8 @@
additionalPicoseconds := restNanos * 1000
] ifFalse:[
timeEncoding := millis.
- restNanos := nanos - (millis * (1000*1000)).
- additionalPicoseconds := (restNanos * 1000) rounded asInteger.
+ restNanos := nanos - (millis * 1000000).
+ additionalPicoseconds := (restNanos * 1000) truncated.
].
"
@@ -2146,13 +2152,14 @@
"
"Modified: / 18-07-2007 / 13:44:16 / cg"
+ "Modified (format): / 22-05-2018 / 16:53:09 / Stefan Vogel"
!
setPicoseconds:picos
"set my duration given picoseconds."
- timeEncoding := picos // (1000 * 1000 * 1000).
- additionalPicoseconds := (picos \\ (1000 * 1000 * 1000)) rounded asInteger.
+ timeEncoding := picos // 1000000000.
+ additionalPicoseconds := (picos \\ 1000000000) truncated.
"
self new setMicroseconds:4
@@ -2173,6 +2180,7 @@
"
"Modified: / 18-07-2007 / 13:44:16 / cg"
+ "Modified: / 22-05-2018 / 16:51:45 / Stefan Vogel"
!
setSeconds:secs