formatISODuration.cjs 959 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. "use strict";
  2. exports.formatISODuration = formatISODuration;
  3. /**
  4. * @name formatISODuration
  5. * @category Common Helpers
  6. * @summary Format a duration object according as ISO 8601 duration string
  7. *
  8. * @description
  9. * Format a duration object according to the ISO 8601 duration standard (https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)
  10. *
  11. * @param duration - The duration to format
  12. *
  13. * @returns The ISO 8601 duration string
  14. *
  15. * @example
  16. * // Format the given duration as ISO 8601 string
  17. * const result = formatISODuration({
  18. * years: 39,
  19. * months: 2,
  20. * days: 20,
  21. * hours: 7,
  22. * minutes: 5,
  23. * seconds: 0
  24. * })
  25. * //=> 'P39Y2M20DT0H0M0S'
  26. */
  27. function formatISODuration(duration) {
  28. const {
  29. years = 0,
  30. months = 0,
  31. days = 0,
  32. hours = 0,
  33. minutes = 0,
  34. seconds = 0,
  35. } = duration;
  36. return `P${years}Y${months}M${days}DT${hours}H${minutes}M${seconds}S`;
  37. }