@@ -16,20 +16,30 @@ export class TimeDuration {
1616 return this . toMillis ( ) / this . unitInMillis ( unit ) ;
1717 }
1818
19- public toMultiUnitString ( smallestUnit : ConvertibleTimeUnit = TimeUnit . Second , displayZero : boolean = true ) : string {
19+ public toMultiUnitString (
20+ smallestUnit : ConvertibleTimeUnit = TimeUnit . Second ,
21+ displayZero : boolean = true ,
22+ unitStringType : UnitStringType = UnitStringType . Short
23+ ) : string {
2024 const mostSignificantPortion = this . getMostSignificantUnitOnly ( ) ;
2125 const remainingMillis = this . millis - mostSignificantPortion . toMillis ( ) ;
2226 if ( mostSignificantPortion . getAmountForUnit ( smallestUnit ) < 1 ) {
23- return displayZero ? new TimeDuration ( 0 , smallestUnit ) . toString ( ) : '' ;
27+ return displayZero ? new TimeDuration ( 0 , smallestUnit ) . toFormattedString ( unitStringType ) : '' ;
2428 }
2529 if ( mostSignificantPortion . unit === smallestUnit || remainingMillis === 0 ) {
26- return mostSignificantPortion . toString ( ) ;
30+ return mostSignificantPortion . toFormattedString ( unitStringType ) ;
2731 }
2832
29- return `${ mostSignificantPortion . toString ( ) } ${ new TimeDuration (
30- remainingMillis ,
31- TimeUnit . Millisecond
32- ) . toMultiUnitString ( smallestUnit , false ) } `;
33+ const joiningStr = unitStringType === UnitStringType . Long ? ' ' : '' ;
34+
35+ return [
36+ mostSignificantPortion . toFormattedString ( unitStringType ) ,
37+ new TimeDuration ( remainingMillis , TimeUnit . Millisecond ) . toMultiUnitString ( smallestUnit , false , unitStringType )
38+ ] . join ( joiningStr ) ;
39+ }
40+
41+ private toFormattedString ( unitStringType : UnitStringType = UnitStringType . Short ) : string {
42+ return unitStringType === UnitStringType . Short ? this . toString ( ) : this . toLongString ( ) ;
3343 }
3444
3545 public getMostSignificantUnitOnly ( ) : TimeDuration {
@@ -141,3 +151,8 @@ type ConvertibleTimeUnit =
141151 | TimeUnit . Minute
142152 | TimeUnit . Second
143153 | TimeUnit . Millisecond ;
154+
155+ export enum UnitStringType {
156+ Long = 'long' ,
157+ Short = 'short'
158+ }
0 commit comments