* Commit updated Javascript packages * Bump preact from 10.5.4 to 10.5.5 in /build/javascript (#265) * Trying a new github workflow to install javascript packages * Bump tailwindcss from 1.9.2 to 1.9.4 in /build/javascript (#266) Bumps [tailwindcss](https://github.com/tailwindlabs/tailwindcss) from 1.9.2 to 1.9.4. - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/master/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/compare/v1.9.2...v1.9.4) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Commit updated Javascript packages * Bump preact from 10.5.4 to 10.5.5 in /build/javascript Bumps [preact](https://github.com/preactjs/preact) from 10.5.4 to 10.5.5. - [Release notes](https://github.com/preactjs/preact/releases) - [Commits](https://github.com/preactjs/preact/compare/10.5.4...10.5.5) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Gabe Kangas <gabek@real-ity.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Owncast <owncast@owncast.online> * Bump @justinribeiro/lite-youtube in /build/javascript Bumps [@justinribeiro/lite-youtube](https://github.com/justinribeiro/lite-youtube) from 0.9.0 to 0.9.1. - [Release notes](https://github.com/justinribeiro/lite-youtube/releases) - [Commits](https://github.com/justinribeiro/lite-youtube/commits) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Owncast <owncast@owncast.online> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Gabe Kangas <gabek@real-ity.com>
40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
export const parseDuration = (str) => {
|
|
const SECONDS_IN_YEAR = 365 * 24 * 60 * 60;
|
|
const SECONDS_IN_MONTH = 30 * 24 * 60 * 60;
|
|
const SECONDS_IN_DAY = 24 * 60 * 60;
|
|
const SECONDS_IN_HOUR = 60 * 60;
|
|
const SECONDS_IN_MIN = 60;
|
|
|
|
// P10Y10M10DT10H10M10.1S
|
|
const durationRegex =
|
|
/P(?:(\d*)Y)?(?:(\d*)M)?(?:(\d*)D)?(?:T(?:(\d*)H)?(?:(\d*)M)?(?:([\d.]*)S)?)?/;
|
|
const match = durationRegex.exec(str);
|
|
|
|
if (!match) {
|
|
return 0;
|
|
}
|
|
|
|
const [year, month, day, hour, minute, second] = match.slice(1);
|
|
|
|
return (parseFloat(year || 0) * SECONDS_IN_YEAR +
|
|
parseFloat(month || 0) * SECONDS_IN_MONTH +
|
|
parseFloat(day || 0) * SECONDS_IN_DAY +
|
|
parseFloat(hour || 0) * SECONDS_IN_HOUR +
|
|
parseFloat(minute || 0) * SECONDS_IN_MIN +
|
|
parseFloat(second || 0));
|
|
};
|
|
|
|
export const parseDate = (str) => {
|
|
// Date format without timezone according to ISO 8601
|
|
// YYY-MM-DDThh:mm:ss.ssssss
|
|
const dateRegex = /^\d+-\d+-\d+T\d+:\d+:\d+(\.\d+)?$/;
|
|
|
|
// If the date string does not specifiy a timezone, we must specifiy UTC. This is
|
|
// expressed by ending with 'Z'
|
|
if (dateRegex.test(str)) {
|
|
str += 'Z';
|
|
}
|
|
|
|
return Date.parse(str);
|
|
};
|