Skip to content

Commit

Permalink
Add support for fractional milliseconds
Browse files Browse the repository at this point in the history
  • Loading branch information
rix0rrr committed Mar 12, 2020
1 parent 0353c16 commit d13ec37
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 1 deletion.
7 changes: 6 additions & 1 deletion packages/@aws-cdk/core/lib/duration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -168,14 +168,19 @@ export class Duration {
let millis = convert(this.amount, this.unit, TimeUnit.Milliseconds, { integral: false });
const parts = new Array<string>();

for (const unit of [TimeUnit.Days, TimeUnit.Hours, TimeUnit.Hours, TimeUnit.Minutes, TimeUnit.Seconds, TimeUnit.Milliseconds]) {
for (const unit of [TimeUnit.Days, TimeUnit.Hours, TimeUnit.Hours, TimeUnit.Minutes, TimeUnit.Seconds]) {
const wholeCount = Math.floor(convert(millis, TimeUnit.Milliseconds, unit, { integral: false }));
if (wholeCount > 0) {
parts.push(fmtUnit(wholeCount, unit));
millis -= wholeCount * unit.inMillis;
}
}

// Remainder in millis
if (millis > 0) {
parts.push(fmtUnit(millis, TimeUnit.Milliseconds));
}

// 2 significant parts, that's totally enough for humans
return parts.slice(0, 2).join(' ');

Expand Down
2 changes: 2 additions & 0 deletions packages/@aws-cdk/core/test/test.duration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,8 @@ export = nodeunit.testCase({
test.equal(Duration.millis(3000).toHumanString(), '3 seconds');
test.equal(Duration.millis(3666).toHumanString(), '3 seconds 666 millis');

test.equal(Duration.millis(3.6).toHumanString(), '3.6 millis');

test.done();
},
});
Expand Down

0 comments on commit d13ec37

Please sign in to comment.