X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=shared%2Fcore-utils%2Fcommon%2Fdate.ts;h=3e4a3c08c7e03c366997588431169dd4a719bf37;hb=8dd754c76735417305c4b68e2ada6f623e9d7650;hp=4f92f758ff665600d5b392d614e4366c0b18522a;hpb=9162fdd36300d2478f13d6ad346ec2c323f40faa;p=github%2FChocobozzz%2FPeerTube.git diff --git a/shared/core-utils/common/date.ts b/shared/core-utils/common/date.ts index 4f92f758f..3e4a3c08c 100644 --- a/shared/core-utils/common/date.ts +++ b/shared/core-utils/common/date.ts @@ -43,6 +43,49 @@ function isLastWeek (d: Date) { return getDaysDifferences(now, d) <= 7 } +function timeToInt (time: number | string) { + if (!time) return 0 + if (typeof time === 'number') return time + + const reg = /^((\d+)[h:])?((\d+)[m:])?((\d+)s?)?$/ + const matches = time.match(reg) + + if (!matches) return 0 + + const hours = parseInt(matches[2] || '0', 10) + const minutes = parseInt(matches[4] || '0', 10) + const seconds = parseInt(matches[6] || '0', 10) + + return hours * 3600 + minutes * 60 + seconds +} + +function secondsToTime (seconds: number, full = false, symbol?: string) { + let time = '' + + if (seconds === 0 && !full) return '0s' + + const hourSymbol = (symbol || 'h') + const minuteSymbol = (symbol || 'm') + const secondsSymbol = full ? '' : 's' + + const hours = Math.floor(seconds / 3600) + if (hours >= 1) time = hours + hourSymbol + else if (full) time = '0' + hourSymbol + + seconds %= 3600 + const minutes = Math.floor(seconds / 60) + if (minutes >= 1 && minutes < 10 && full) time += '0' + minutes + minuteSymbol + else if (minutes >= 1) time += minutes + minuteSymbol + else if (full) time += '00' + minuteSymbol + + seconds %= 60 + if (seconds >= 1 && seconds < 10 && full) time += '0' + seconds + secondsSymbol + else if (seconds >= 1) time += seconds + secondsSymbol + else if (full) time += '00' + + return time +} + // --------------------------------------------------------------------------- export { @@ -51,7 +94,9 @@ export { isThisMonth, isToday, isLastMonth, - isLastWeek + isLastWeek, + timeToInt, + secondsToTime } // ---------------------------------------------------------------------------