diff options
author | Sebastian <sebasjm@gmail.com> | 2021-08-23 16:46:06 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2021-08-23 16:48:30 -0300 |
commit | 38acabfa6089ab8ac469c12b5f55022fb96935e5 (patch) | |
tree | 453dbf70000cc5e338b06201af1eaca8343f8f73 /date-fns/src/formatISODuration/index.js | |
parent | f26125e039143b92dc0d84e7775f508ab0cdcaa8 (diff) | |
download | node-vendor-38acabfa6089ab8ac469c12b5f55022fb96935e5.tar.gz node-vendor-38acabfa6089ab8ac469c12b5f55022fb96935e5.tar.bz2 node-vendor-38acabfa6089ab8ac469c12b5f55022fb96935e5.zip |
Diffstat (limited to 'date-fns/src/formatISODuration/index.js')
-rw-r--r-- | date-fns/src/formatISODuration/index.js | 46 |
1 files changed, 46 insertions, 0 deletions
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` +} |