or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

component-parser.mdcomponents.mddesign-system.mdduration.mdevents.mdhelpers.mdindex.mdparsing.mdperiod-binary.mdproperties.mdrecurrence.mdtime.mdtimezone.mdvcard-time.md
tile.json

duration.mddocs/

Duration Calculations

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.

Capabilities

Duration Class

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"
}

Static Factory Methods

/**
 * 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);

Instance Methods

/**
 * 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