Skip to main content
Glama

convertTimezone

Convert date and time between timezones using Luxon library. Input ISO 8601 date, source, and target timezone (IANA identifier); specify output format (full, date, time, iso). Simplify timezone transformations.

Instructions

Convert date/time between timezones using Luxon

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dateYesDate/time string to convert (ISO 8601 format)
formatNoOutput format (full, date, time, iso)full
fromTZYesSource timezone (IANA timezone identifier)
toTZYesTarget timezone (IANA timezone identifier)

Implementation Reference

  • The main handler function that parses the input date in source timezone, converts it to target timezone using Luxon DateTime, formats the output according to specified format, and returns a structured TimezoneConversionResult as JSON.
    handler: async ({ date, fromTZ, toTZ, format = 'full' }: { date: string; fromTZ: string; toTZ: string; format?: 'full' | 'date' | 'time' | 'iso' }) => { try { const dt = DateTime.fromISO(date, { zone: fromTZ }); if (!dt.isValid) { throw new Error(`Invalid date format or timezone: ${dt.invalidReason}`); } const converted = dt.setZone(toTZ); if (!converted.isValid) { throw new Error(`Invalid target timezone: ${converted.invalidReason}`); } let formattedOriginal: string; let formattedConverted: string; switch (format) { case 'full': formattedOriginal = dt.toLocaleString(DateTime.DATETIME_FULL); formattedConverted = converted.toLocaleString(DateTime.DATETIME_FULL); break; case 'date': formattedOriginal = dt.toLocaleString(DateTime.DATE_FULL); formattedConverted = converted.toLocaleString(DateTime.DATE_FULL); break; case 'time': formattedOriginal = dt.toLocaleString(DateTime.TIME_WITH_SECONDS); formattedConverted = converted.toLocaleString(DateTime.TIME_WITH_SECONDS); break; case 'iso': formattedOriginal = dt.toISO(); formattedConverted = converted.toISO(); break; default: throw new Error(`Unsupported format: ${format}`); } const result: TimezoneConversionResult = { originalDate: formattedOriginal, convertedDate: formattedConverted, fromTimezone: fromTZ, toTimezone: toTZ }; return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; } catch (error) { throw new Error(`Timezone conversion failed: ${error instanceof Error ? error.message : 'Unknown error'}`); } }
  • Input schema (JSON Schema) defining the required parameters: date (ISO string), fromTZ and toTZ (IANA identifiers), and optional format (full|date|time|iso).
    inputSchema: { type: 'object', properties: { date: { type: 'string', description: 'Date/time string to convert (ISO 8601 format)' }, fromTZ: { type: 'string', description: 'Source timezone (IANA timezone identifier)' }, toTZ: { type: 'string', description: 'Target timezone (IANA timezone identifier)' }, format: { type: 'string', description: 'Output format (full, date, time, iso)', enum: ['full', 'date', 'time', 'iso'], default: 'full' } }, required: ['date', 'fromTZ', 'toTZ'] },
  • src/index.ts:28-35 (registration)
    Spreads dateTimeTools (containing convertTimezone) into the allTools registry, which is used by the MCP server to list and execute tools.
    const allTools: ToolKit = { ...systemTools, ...networkTools, ...geoTools, ...generatorTools, ...dateTimeTools, ...securityTools };
  • TypeScript interface defining the structure of the TimezoneConversionResult output from the handler.
    export interface TimezoneConversionResult { originalDate: string; convertedDate: string; fromTimezone: string; toTimezone: string; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cyanheads/toolkit-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server