UNPKG

timezone-codes

Version:

[DEPRECATED] A comprehensive, typed dataset of IANA timezone identifiers with metadata.

76 lines (74 loc) 2.64 kB
#!/usr/bin/env node import { readFileSync } from 'fs'; import { join } from 'path'; import { fileURLToPath } from 'url'; var __dirname = fileURLToPath(new URL(".", import.meta.url)); var timezonesData = JSON.parse( readFileSync(join(__dirname, "data", "timezones.json"), "utf-8") ); var timezones = Object.freeze(timezonesData.timezones); function getTimezoneByName(name) { if (!name) return void 0; return timezones.find((tz) => tz.name === name); } function isValidTimezoneName(name) { if (!name) return false; return timezones.some((tz) => tz.name === name); } async function getCurrentTimezoneDetails(name) { if (!name || !isValidTimezoneName(name)) return void 0; try { const date = /* @__PURE__ */ new Date(); const formatter = new Intl.DateTimeFormat("en-US", { timeZone: name, timeZoneName: "shortOffset" }); const parts = formatter.formatToParts(date); const offsetPart = parts.find((part) => part.type === "timeZoneName"); const offset = offsetPart?.value || ""; const shortFormatter = new Intl.DateTimeFormat("en-US", { timeZone: name, timeZoneName: "short" }); const shortParts = shortFormatter.formatToParts(date); const abbreviationPart = shortParts.find((part) => part.type === "timeZoneName"); const abbreviation = abbreviationPart?.value || ""; return { currentUtcOffset: offset, currentAbbreviation: abbreviation }; } catch (error) { return void 0; } } // src/cli.ts async function main() { const args = process.argv.slice(2); if (args.length === 0) { console.log("Usage: npx timezone-codes <timezone-name>"); console.log("Example: npx timezone-codes Asia/Tokyo"); process.exit(0); } const timezoneName = args[0]; const timezone = getTimezoneByName(timezoneName); if (!timezone) { console.error(`Error: "${timezoneName}" is not a valid IANA timezone name.`); process.exit(1); } console.log(`Timezone: ${timezone.name}`); console.log(`Region: ${timezone.region}`); console.log(`Standard UTC Offset: ${timezone.standardUtcOffset}`); console.log(`Standard Abbreviation: ${timezone.standardAbbreviation}`); try { const currentDetails = await getCurrentTimezoneDetails(timezoneName); if (currentDetails) { console.log(`Current UTC Offset: ${currentDetails.currentUtcOffset}`); console.log(`Current Abbreviation: ${currentDetails.currentAbbreviation}`); } } catch (error) { console.error("Error getting current timezone details:", error); } } main().catch(console.error); //# sourceMappingURL=cli.mjs.map //# sourceMappingURL=cli.mjs.map