User Rating 0.0
Total Usage 0 times
Category Time
Accepts ISO 8601, Unix timestamps, RFC 2822, or relaxed formats
Examples:
    Is this tool helpful?

    Your feedback helps us improve.

    About

    UTC offsets introduce a single, persistent class of error in distributed systems and scheduling: the wrong meeting time, the misattributed log entry, the missed deployment window. This tool parses raw UTC date strings - ISO 8601, RFC 2822, Unix timestamps in seconds or milliseconds - and converts them to any of the 400+ IANA timezone identifiers supported by the browser's Intl API. It does not guess your format. It tries multiple parsers in priority order and uses the first valid parse. The conversion is performed entirely by the runtime's DateTimeFormat engine, which accounts for historical DST transitions and political timezone boundary changes stored in the ICU dataset.

    Limitations: sub-second precision is truncated to milliseconds. Leap seconds are not represented in JavaScript's Date object. Dates before the Unix epoch (1970-01-01) are supported but may exhibit platform-dependent behavior for pre-Gregorian calendar dates. Pro tip: if you are pasting from a database log, check whether the timestamp includes a timezone indicator. A bare datetime like 2024-01-15 14:30:00 without a trailing Z or offset is ambiguous and will be treated as UTC by this tool, which may not match your source system's interpretation.

    utc converter timezone converter date converter utc to local time iso 8601 converter unix timestamp converter

    Formulas

    The conversion relies on JavaScript's Intl.DateTimeFormat constructor with a specified timeZone option. Internally, the engine computes the target local time from the UTC epoch milliseconds value stored in the Date object.

    Ttarget = TUTC + Δoffset(tz, TUTC)

    Where TUTC = the input time as UTC epoch milliseconds, Δoffset = the timezone offset function that returns the correct offset in milliseconds for timezone tz at the specific instant TUTC. This offset is not a constant - it varies with DST rules, which change historically. The browser's ICU database encodes these transitions.

    For Unix timestamp detection, the parser checks whether the input is a pure numeric string. If the value is less than 1 × 1012, it is interpreted as seconds since epoch. If greater, it is interpreted as milliseconds.

    {
    Tms = n × 1000 if n < 1012Tms = n if n 1012

    Where n = the parsed numeric input and Tms = epoch milliseconds passed to the Date constructor.

    Reference Data

    Timezone (IANA)AbbreviationUTC Offset (Standard)UTC Offset (DST)Region
    America/New_YorkEST / EDT−05:00−04:00US East Coast
    America/ChicagoCST / CDT−06:00−05:00US Central
    America/DenverMST / MDT−07:00−06:00US Mountain
    America/Los_AngelesPST / PDT−08:00−07:00US West Coast
    America/AnchorageAKST / AKDT−09:00−08:00Alaska
    Pacific/HonoluluHST−10:00No DSTHawaii
    Europe/LondonGMT / BST+00:00+01:00United Kingdom
    Europe/BerlinCET / CEST+01:00+02:00Central Europe
    Europe/MoscowMSK+03:00No DSTRussia West
    Asia/DubaiGST+04:00No DSTGulf States
    Asia/KolkataIST+05:30No DSTIndia
    Asia/KathmanduNPT+05:45No DSTNepal
    Asia/ShanghaiCST+08:00No DSTChina
    Asia/TokyoJST+09:00No DSTJapan
    Australia/SydneyAEST / AEDT+10:00+11:00Australia East
    Australia/AdelaideACST / ACDT+09:30+10:30Australia Central
    Pacific/AucklandNZST / NZDT+12:00+13:00New Zealand
    Pacific/ChathamCHAST / CHADT+12:45+13:45Chatham Islands
    America/Sao_PauloBRT−03:00No DSTBrazil East
    America/Argentina/Buenos_AiresART−03:00No DSTArgentina
    Africa/CairoEET+02:00No DSTEgypt
    Africa/NairobiEAT+03:00No DSTEast Africa
    Asia/SingaporeSGT+08:00No DSTSingapore
    Asia/Hong_KongHKT+08:00No DSTHong Kong
    Europe/IstanbulTRT+03:00No DSTTurkey
    America/PhoenixMST−07:00No DSTArizona (no DST)
    Asia/CalcuttaIST+05:30No DSTIndia (alias)
    Pacific/FijiFJT / FJST+12:00+13:00Fiji
    Atlantic/ReykjavikGMT+00:00No DSTIceland
    Pacific/TongatapuTOT+13:00No DSTTonga (UTC+13)

    Frequently Asked Questions

    A bare datetime string with no trailing Z, UTC suffix, or numeric offset is inherently ambiguous. This tool assumes UTC for all ambiguous inputs. If your source system stores local times without an indicator, you must append "Z" or "+00:00" manually if the value is truly UTC, or select the source timezone and mentally reverse the conversion. The JavaScript Date constructor's behavior with bare strings is browser-dependent - some treat it as UTC, others as local time. This tool normalizes by explicitly appending "Z" to bare ISO-like strings before parsing.
    The offset function Δoffset is not a constant. It depends on the Daylight Saving Time rules in effect at the specific instant being converted. America/New_York is UTC−05:00 during standard time (EST, roughly November through March) and UTC−04:00 during daylight time (EDT, roughly March through November). The exact transition dates have changed historically - for example, the US Energy Policy Act of 2005 extended DST starting in 2007. The browser's ICU timezone database encodes these historical transitions.
    JavaScript's Date object supports timestamps up to ±8,640,000,000,000,000 milliseconds from the epoch, which corresponds to approximately ±273,790 years. Any numeric input producing a Date that returns NaN from getTime() is rejected as invalid. Practically, timestamps beyond year 9999 may render oddly in formatted output due to 4-digit year assumptions.
    No. JavaScript's Date object does not model leap seconds. UTC as implemented in ECMAScript uses a day length of exactly 86,400 seconds. The 27 leap seconds inserted between 1972 and 2017 are invisible. If you are working with TAI (International Atomic Time) or GPS time, you must add the cumulative leap second offset externally. For most scheduling and logging use cases, this discrepancy is irrelevant.
    The parser attempts multiple format patterns. However, the DD/MM/YYYY vs MM/DD/YYYY ambiguity is fundamentally unresolvable for dates where the day is 12 or less (e.g., "05/06/2024" could be May 6 or June 5). This tool prioritizes ISO 8601 (YYYY-MM-DD) and falls back to the browser's native Date.parse() for other formats, which typically uses the US convention (MM/DD/YYYY). If your logs use DD/MM/YYYY, reformat to ISO 8601 before pasting for unambiguous results.
    Timezone offsets are political decisions, not mathematical necessities. India adopted UTC&plus;05:30 as a single zone to unify the subcontinent. Nepal chose UTC&plus;05:45 to differentiate from India. The Chatham Islands use UTC&plus;12:45. Historically, some zones used offsets to the second (e.g., Amsterdam was UTC&plus;00:19:32 before 1940). The IANA database encodes all of these. The Intl.DateTimeFormat API handles them correctly.