Add toHHMMSS helper
This commit is contained in:
parent
f33fa149fc
commit
ed964cb58f
|
@ -0,0 +1,49 @@
|
|||
import toHHMMSS from './toHHMMSS';
|
||||
import { Duration } from '../generated/google/protobuf/duration';
|
||||
|
||||
describe('toHHMMSS', () => {
|
||||
it('renders correctly for 0ms', () => {
|
||||
const duration: Duration = { seconds: 0, nanos: 0 };
|
||||
expect(toHHMMSS(duration)).toEqual('00:00');
|
||||
});
|
||||
|
||||
it('renders correctly for 500ms', () => {
|
||||
const duration: Duration = { seconds: 0, nanos: 500_000_000 };
|
||||
expect(toHHMMSS(duration)).toEqual('00:00');
|
||||
});
|
||||
|
||||
it('renders correctly for 2700ms', () => {
|
||||
const duration: Duration = { seconds: 27, nanos: 0 };
|
||||
expect(toHHMMSS(duration)).toEqual('00:27');
|
||||
});
|
||||
|
||||
it('renders correctly for 61s', () => {
|
||||
const duration: Duration = { seconds: 61, nanos: 0 };
|
||||
expect(toHHMMSS(duration)).toEqual('01:01');
|
||||
});
|
||||
|
||||
it('renders correctly for 1200s', () => {
|
||||
const duration: Duration = { seconds: 1200, nanos: 0 };
|
||||
expect(toHHMMSS(duration)).toEqual('20:00');
|
||||
});
|
||||
|
||||
it('renders correctly for 1201s', () => {
|
||||
const duration: Duration = { seconds: 1201, nanos: 0 };
|
||||
expect(toHHMMSS(duration)).toEqual('20:01');
|
||||
});
|
||||
|
||||
it('renders correctly for 1h', () => {
|
||||
const duration: Duration = { seconds: 3600, nanos: 0 };
|
||||
expect(toHHMMSS(duration)).toEqual('01:00:00');
|
||||
});
|
||||
|
||||
it('renders correctly for 1h1m1s', () => {
|
||||
const duration: Duration = { seconds: 3661, nanos: 0 };
|
||||
expect(toHHMMSS(duration)).toEqual('01:01:01');
|
||||
});
|
||||
|
||||
it('renders correctly for 24h1s', () => {
|
||||
const duration: Duration = { seconds: 86401, nanos: 0 };
|
||||
expect(toHHMMSS(duration)).toEqual('24:00:01');
|
||||
});
|
||||
});
|
|
@ -0,0 +1,17 @@
|
|||
import { Duration } from '../generated/google/protobuf/duration';
|
||||
import millisFromDuration from './millisFromDuration';
|
||||
|
||||
function toHHMMSS(dur: Duration): string {
|
||||
const millis = millisFromDuration(dur);
|
||||
let secs = Math.floor(millis / 1_000);
|
||||
const hrs = Math.floor(secs / 3600);
|
||||
const mins = Math.floor(secs / 60) % 60;
|
||||
secs = secs % 60;
|
||||
|
||||
return [hrs, mins, secs]
|
||||
.map((v) => (v < 10 ? '0' + v : v))
|
||||
.filter((v, i) => v != '00' || i > 0)
|
||||
.join(':');
|
||||
}
|
||||
|
||||
export default toHHMMSS;
|
Loading…
Reference in New Issue