timered-counter
Version:
Make the value change more vivid and natural
32 lines • 1.04 kB
JavaScript
import { isNumber } from 'remeda';
import { DurationPartType } from '../types/duration.js';
const ISO8601DurationMarker = {
[DurationPartType.Year]: 'Y',
[DurationPartType.Month]: 'M',
[DurationPartType.Week]: 'W',
[DurationPartType.Day]: 'D',
[DurationPartType.Hour]: 'H',
[DurationPartType.Minute]: 'M',
[DurationPartType.Second]: 'S',
};
const DateParts = [
DurationPartType.Year,
DurationPartType.Month,
DurationPartType.Week,
DurationPartType.Day,
];
const TimeParts = [
DurationPartType.Hour,
DurationPartType.Minute,
DurationPartType.Second,
];
export function iso8601Duration(duration) {
const datePart = DateParts.map(part => isNumber(duration[part])
? `${duration[part]}${ISO8601DurationMarker[part]}`
: '');
const timePart = TimeParts.map(part => isNumber(duration[part])
? `${duration[part]}${ISO8601DurationMarker[part]}`
: '');
return `P${datePart.join('')}T${timePart.join('')}`;
}
//# sourceMappingURL=iso8601-duration.js.map