subtract_time
Calculate a past date by subtracting a specified duration (years, months, days, hours, minutes, or seconds) from any given time, with timezone support.
Instructions
Subtract duration from a date/time
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| time | Yes | Base time | |
| amount | Yes | Amount to subtract | |
| unit | Yes | Unit of time | |
| timezone | No | Timezone for calculation (default: system timezone) |
Implementation Reference
- src/tools/subtractTime.ts:10-38 (handler)The core handler function for the 'subtract_time' tool. It subtracts time by calling addTime with a negative amount, includes caching via withCache, timezone resolution, and debug logging.export function subtractTime(params: SubtractTimeParams): SubtractTimeResult { debug.timing('subtractTime called with params: %O', params); const { time, amount, unit, timezone } = params; const config = getConfig(); // Determine the effective timezone for cache key const effectiveTimezone = resolveTimezone(timezone, config.defaultTimezone); // Use withCache wrapper instead of manual cache management return withCache( `subtract_${time}_${amount}_${unit}_${effectiveTimezone}`, CacheTTL.CALCULATIONS, () => { debug.timing('Delegating to addTime with negated amount: %d', -amount); // Subtraction is just addition with negative amount const result = addTime({ time, amount: -amount, // Negate the amount unit, timezone, }); debug.timing('subtractTime returning: %O', result); return result; } ); }
- src/index.ts:97-113 (schema)Input schema for the 'subtract_time' tool, defining parameters, types, descriptions, and required fields.inputSchema: { type: 'object' as const, properties: { time: { type: 'string' as const, description: 'Base time' }, amount: { type: 'number' as const, description: 'Amount to subtract' }, unit: { type: 'string' as const, enum: ['years', 'months', 'days', 'hours', 'minutes', 'seconds'], description: 'Unit of time', }, timezone: { type: 'string' as const, description: 'Timezone for calculation (default: system timezone)', }, }, required: ['time', 'amount', 'unit'], },
- src/index.ts:94-114 (registration)Registration of the 'subtract_time' tool in TOOL_DEFINITIONS array, including name, description, and schema.{ name: 'subtract_time', description: 'Subtract duration from a date/time', inputSchema: { type: 'object' as const, properties: { time: { type: 'string' as const, description: 'Base time' }, amount: { type: 'number' as const, description: 'Amount to subtract' }, unit: { type: 'string' as const, enum: ['years', 'months', 'days', 'hours', 'minutes', 'seconds'], description: 'Unit of time', }, timezone: { type: 'string' as const, description: 'Timezone for calculation (default: system timezone)', }, }, required: ['time', 'amount', 'unit'], }, },
- src/index.ts:263-263 (registration)Mapping of 'subtract_time' to the subtractTime handler function in TOOL_FUNCTIONS object.subtract_time: (params: unknown) => subtractTime(params as Parameters<typeof subtractTime>[0]),
- src/types/index.ts:65-76 (schema)TypeScript type definitions for SubtractTimeParams (aliases AddTimeParams) and SubtractTimeResult (aliases TimeCalculationResult). Note: full AddTimeParams and TimeCalculationResult defined above in lines 58-72.export type SubtractTimeParams = AddTimeParams; export interface TimeCalculationResult { original: string; result: string; unix_original: number; unix_result: number; } // Type alias for consistency with test export type AddTimeResult = TimeCalculationResult; export type SubtractTimeResult = TimeCalculationResult;
- src/tools/index.ts:5-5 (registration)Export of subtractTime function from its module for use in src/index.ts.export { subtractTime } from './subtractTime';