timezone-codes
Version:
[DEPRECATED] A comprehensive, typed dataset of IANA timezone identifiers with metadata.
76 lines (74 loc) • 2.64 kB
JavaScript
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