import absFloor from '../utils/abs-floor';
+import zeroFill from '../utils/zero-fill';
var abs = Math.abs;
export function toISOString() {
// 3600 seconds -> 60 minutes -> 1 hour
minutes = absFloor(seconds / 60);
hours = absFloor(minutes / 60);
+ milliseconds %= 1000;
seconds %= 60;
- seconds += (milliseconds % 1000) / 1000;
minutes %= 60;
// 12 months -> 1 year
var D = days;
var h = hours;
var m = minutes;
- var s = seconds;
+ var s = (seconds || milliseconds) ? seconds + (milliseconds ? '.' + zeroFill(milliseconds, 3).replace(/0+$/, '') : '') : '';
var total = this.asSeconds();
if (!total) {
assert.equal(moment.duration({}).toISOString(), 'P0D', 'zero duration');
assert.equal(moment.duration({M: 16, d:40, s: 86465}).toISOString(), 'P1Y4M40DT24H1M5S', 'all fields');
assert.equal(moment.duration({ms: 123456789}).toISOString(), 'PT34H17M36.789S', 'check floating-point errors');
+ assert.equal(moment.duration({ms: 31952}).toISOString(), 'PT31.952S', 'check floating-point errors');
});
test('toString acts as toISOString', function (assert) {