Duration representation for time spans with support for weeks, days, hours, minutes, and seconds. The Duration class handles iCalendar duration values with calculation and manipulation methods.
Represents iCalendar duration values with various calculation and manipulation methods.
/**
* Duration constructor
* @param {Object} data - Duration data (optional)
* @param {number} data.weeks - Duration in weeks
* @param {number} data.days - Duration in days
* @param {number} data.hours - Duration in hours
* @param {number} data.minutes - Duration in minutes
* @param {number} data.seconds - Duration in seconds
* @param {boolean} data.isNegative - If true, duration is negative
*/
class ICAL.Duration {
constructor(data);
// Properties
weeks: number; // Weeks component
days: number; // Days component
hours: number; // Hours component
minutes: number; // Minutes component
seconds: number; // Seconds component
isNegative: boolean; // Whether duration is negative
readonly icaltype: string; // Always "duration"
}/**
* Parse duration from iCalendar string
* @param {string} str - Duration string (e.g., "P7D", "PT2H30M")
* @returns {ICAL.Duration} Parsed duration
*/
static fromString(str);
/**
* Create duration from total seconds
* @param {number} seconds - Total seconds
* @returns {ICAL.Duration} Duration object
*/
static fromSeconds(seconds);/**
* Create copy of duration
* @returns {ICAL.Duration} Cloned duration
*/
clone();
/**
* Convert duration to total seconds
* @returns {number} Total duration in seconds
*/
toSeconds();
/**
* Convert to iCalendar string format
* @returns {string} Duration in iCalendar format
*/
toString();
/**
* Normalize duration components
*/
normalize();Usage Examples:
const ICAL = require('ical.js');
// Create duration (2 hours 30 minutes)
const duration = new ICAL.Duration({
hours: 2,
minutes: 30
});
console.log(duration.toString()); // "PT2H30M"
console.log(duration.toSeconds()); // 9000
// Parse from string
const parsed = ICAL.Duration.fromString('P7D');
console.log(parsed.days); // 7
console.log(parsed.weeks); // 0
// From seconds
const fromSecs = ICAL.Duration.fromSeconds(3661);
console.log(fromSecs.hours); // 1
console.log(fromSecs.minutes); // 1
console.log(fromSecs.seconds); // 1