Skip to main content
Glama

convertTimezone

Convert date and time between different timezones using IANA identifiers. Specify source and target timezones with an ISO 8601 date string to get formatted output.

Instructions

Convert date/time between timezones using Luxon

Input Schema

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

Implementation Reference

  • The core handler function that parses the input date, converts timezone using Luxon, formats output based on specified format, and returns JSON-structured result.
    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 defining parameters for date, source/target timezones, and optional output format with validation rules.
    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']
  • TypeScript interface defining the structure of the timezone conversion result object used in the handler.
    export interface TimezoneConversionResult { originalDate: string; convertedDate: string; fromTimezone: string; toTimezone: string; }
  • src/index.ts:28-35 (registration)
    Registration of dateTimeTools (containing convertTimezone) into the central allTools object used by MCP server for tool listing and execution.
    const allTools: ToolKit = { ...systemTools, ...networkTools, ...geoTools, ...generatorTools, ...dateTimeTools, ...securityTools };

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