From 38acabfa6089ab8ac469c12b5f55022fb96935e5 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 23 Aug 2021 16:46:06 -0300 Subject: added web vendors --- date-fns/src/formatISODuration/index.js | 46 +++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 date-fns/src/formatISODuration/index.js (limited to 'date-fns/src/formatISODuration/index.js') diff --git a/date-fns/src/formatISODuration/index.js b/date-fns/src/formatISODuration/index.js new file mode 100644 index 0000000..0702457 --- /dev/null +++ b/date-fns/src/formatISODuration/index.js @@ -0,0 +1,46 @@ +import requiredArgs from '../_lib/requiredArgs/index' + +/** + * @name formatISODuration + * @category Common Helpers + * @summary Format a duration object according as ISO 8601 duration string + * + * @description + * Format a duration object according to the ISO 8601 duration standard (https://www.digi.com/resources/documentation/digidocs/90001437-13/reference/r_iso_8601_duration_format.htm) + * + * @param {Duration} duration - the duration to format + * + * @returns {String} The ISO 8601 duration string + * @throws {TypeError} Requires 1 argument + * @throws {Error} Argument must be an object + * + * @example + * // Format the given duration as ISO 8601 string + * formatISODuration({ + * years: 39, + * months: 2, + * days: 20, + * hours: 7, + * minutes: 5, + * seconds: 0 + * }) + * //=> 'P39Y2M20DT0H0M0S' + */ + +export default function formatISODuration(duration) { + requiredArgs(1, arguments) + + if (typeof duration !== 'object') + throw new Error('Duration must be an object') + + const { + years = 0, + months = 0, + days = 0, + hours = 0, + minutes = 0, + seconds = 0 + } = duration + + return `P${years}Y${months}M${days}DT${hours}H${minutes}M${seconds}S` +} -- cgit v1.2.3