[{"data":1,"prerenderedAt":1014},["ShallowReactive",2],{"guide-working-with-timezones":3},{"id":4,"title":5,"body":6,"date":1006,"description":1007,"extension":1008,"meta":1009,"navigation":57,"path":1010,"readingTime":330,"seo":1011,"stem":1012,"__hash__":1013},"guides\u002Fguides\u002Fworking-with-timezones.md","Working with Timezones",{"type":7,"value":8,"toc":983},"minimark",[9,14,18,21,25,28,71,78,82,89,160,175,179,182,190,195,211,228,232,239,244,346,350,381,385,497,503,507,512,591,600,604,669,673,742,746,750,801,807,811,866,870,876,879,883,943,947,962,966,979],[10,11,13],"h2",{"id":12},"timezone-bugs-are-expensive","Timezone Bugs Are Expensive",[15,16,17],"p",{},"A timezone bug does not crash your app — it silently corrupts data. Scheduled emails arrive at the wrong hour. Subscription renewals fire a day early. Audit logs show timestamps that do not match reality. By the time you notice, bad data has spread across systems.",[15,19,20],{},"The fix starts with principles, not libraries.",[10,22,24],{"id":23},"always-store-in-utc","Always Store in UTC",[15,26,27],{},"UTC never observes Daylight Saving Time. It never shifts. A UTC timestamp means the same thing on every server, in every database, in every country.",[29,30,35],"pre",{"className":31,"code":32,"language":33,"meta":34,"style":34},"language-python shiki shiki-themes github-light github-dark","# BAD — storing local time\nevent_time = \"2026-05-28 14:00:00\"  # What zone?\n\n# GOOD — storing UTC\nevent_time = \"2026-05-28T18:00:00Z\"  # 2 PM EDT = 6 PM UTC\n","python","",[36,37,38,46,52,59,65],"code",{"__ignoreMap":34},[39,40,43],"span",{"class":41,"line":42},"line",1,[39,44,45],{},"# BAD — storing local time\n",[39,47,49],{"class":41,"line":48},2,[39,50,51],{},"event_time = \"2026-05-28 14:00:00\"  # What zone?\n",[39,53,55],{"class":41,"line":54},3,[39,56,58],{"emptyLinePlaceholder":57},true,"\n",[39,60,62],{"class":41,"line":61},4,[39,63,64],{},"# GOOD — storing UTC\n",[39,66,68],{"class":41,"line":67},5,[39,69,70],{},"event_time = \"2026-05-28T18:00:00Z\"  # 2 PM EDT = 6 PM UTC\n",[15,72,73,77],{},[74,75,76],"strong",{},"Rule:"," Store every timestamp in UTC. No exceptions. Convert to local time only at the point of display.",[10,79,81],{"id":80},"display-in-local-time","Display in Local Time",[15,83,84,85,88],{},"Users do not think in UTC. When you show ",[36,86,87],{},"2026-05-28T18:00:00Z"," to someone in Tokyo, they have to do mental math. Display times in the user's local timezone instead.",[29,90,94],{"className":91,"code":92,"language":93,"meta":34,"style":34},"language-javascript shiki shiki-themes github-light github-dark","\u002F\u002F Convert UTC to the user's local timezone\nconst date = new Date(\"2026-05-28T18:00:00Z\")\nconsole.log(date.toLocaleString())\n\u002F\u002F In Tokyo:  \"2026\u002F5\u002F29 03:00:00\" (next day!)\n\u002F\u002F In New York: \"5\u002F28\u002F2026, 2:00:00 PM\"\n","javascript",[36,95,96,102,133,150,155],{"__ignoreMap":34},[39,97,98],{"class":41,"line":42},[39,99,101],{"class":100},"sJ8bj","\u002F\u002F Convert UTC to the user's local timezone\n",[39,103,104,108,112,115,118,122,126,130],{"class":41,"line":48},[39,105,107],{"class":106},"szBVR","const",[39,109,111],{"class":110},"sj4cs"," date",[39,113,114],{"class":106}," =",[39,116,117],{"class":106}," new",[39,119,121],{"class":120},"sScJk"," Date",[39,123,125],{"class":124},"sVt8B","(",[39,127,129],{"class":128},"sZZnC","\"2026-05-28T18:00:00Z\"",[39,131,132],{"class":124},")\n",[39,134,135,138,141,144,147],{"class":41,"line":54},[39,136,137],{"class":124},"console.",[39,139,140],{"class":120},"log",[39,142,143],{"class":124},"(date.",[39,145,146],{"class":120},"toLocaleString",[39,148,149],{"class":124},"())\n",[39,151,152],{"class":41,"line":61},[39,153,154],{"class":100},"\u002F\u002F In Tokyo:  \"2026\u002F5\u002F29 03:00:00\" (next day!)\n",[39,156,157],{"class":41,"line":67},[39,158,159],{"class":100},"\u002F\u002F In New York: \"5\u002F28\u002F2026, 2:00:00 PM\"\n",[15,161,162,163,166,167,170,171,174],{},"JavaScript's ",[36,164,165],{},"Date"," object converts to the browser's local timezone automatically when you use ",[36,168,169],{},"toLocaleString()"," or ",[36,172,173],{},"toLocaleDateString()",".",[10,176,178],{"id":177},"iso-8601-format","ISO 8601 Format",[15,180,181],{},"ISO 8601 is the international standard for date and time representation. It eliminates ambiguity.",[29,183,188],{"className":184,"code":186,"language":187,"meta":34},[185],"language-text","2026-05-28T18:00:00Z          (UTC, denoted by Z)\n2026-05-28T14:00:00-04:00     (with offset)\n2026-05-28                     (date only — no ambiguity)\n","text",[36,189,186],{"__ignoreMap":34},[15,191,192],{},[74,193,194],{},"Why ISO 8601 wins:",[196,197,198,202,205,208],"ul",{},[199,200,201],"li",{},"Alphabetical sort equals chronological sort",[199,203,204],{},"Every component has a fixed position",[199,206,207],{},"Timezone offset is explicit",[199,209,210],{},"Supported by every major language and database",[15,212,213,216,217,170,220,223,224,227],{},[74,214,215],{},"Always include the offset"," (",[36,218,219],{},"Z",[36,221,222],{},"+\u002F-HH:MM","). A bare string like ",[36,225,226],{},"2026-05-28T14:00:00"," is ambiguous — different systems interpret it as local or UTC inconsistently.",[10,229,231],{"id":230},"javascript-intl-api","JavaScript Intl API",[15,233,234,235,238],{},"Modern browsers provide the ",[36,236,237],{},"Intl"," API for timezone-aware formatting — no libraries required.",[240,241,243],"h3",{"id":242},"format-in-a-specific-timezone","Format in a Specific Timezone",[29,245,247],{"className":91,"code":246,"language":93,"meta":34,"style":34},"const date = new Date(\"2026-05-28T18:00:00Z\")\n\nconst londonTime = new Intl.DateTimeFormat(\"en-GB\", {\n  timeZone: \"Europe\u002FLondon\",\n  dateStyle: \"full\",\n  timeStyle: \"short\",\n}).format(date)\n\u002F\u002F \"Thursday, 28 May 2026 at 19:00\" (BST, UTC+1)\n",[36,248,249,267,271,296,307,317,328,340],{"__ignoreMap":34},[39,250,251,253,255,257,259,261,263,265],{"class":41,"line":42},[39,252,107],{"class":106},[39,254,111],{"class":110},[39,256,114],{"class":106},[39,258,117],{"class":106},[39,260,121],{"class":120},[39,262,125],{"class":124},[39,264,129],{"class":128},[39,266,132],{"class":124},[39,268,269],{"class":41,"line":48},[39,270,58],{"emptyLinePlaceholder":57},[39,272,273,275,278,280,282,285,288,290,293],{"class":41,"line":54},[39,274,107],{"class":106},[39,276,277],{"class":110}," londonTime",[39,279,114],{"class":106},[39,281,117],{"class":106},[39,283,284],{"class":124}," Intl.",[39,286,287],{"class":120},"DateTimeFormat",[39,289,125],{"class":124},[39,291,292],{"class":128},"\"en-GB\"",[39,294,295],{"class":124},", {\n",[39,297,298,301,304],{"class":41,"line":61},[39,299,300],{"class":124},"  timeZone: ",[39,302,303],{"class":128},"\"Europe\u002FLondon\"",[39,305,306],{"class":124},",\n",[39,308,309,312,315],{"class":41,"line":67},[39,310,311],{"class":124},"  dateStyle: ",[39,313,314],{"class":128},"\"full\"",[39,316,306],{"class":124},[39,318,320,323,326],{"class":41,"line":319},6,[39,321,322],{"class":124},"  timeStyle: ",[39,324,325],{"class":128},"\"short\"",[39,327,306],{"class":124},[39,329,331,334,337],{"class":41,"line":330},7,[39,332,333],{"class":124},"}).",[39,335,336],{"class":120},"format",[39,338,339],{"class":124},"(date)\n",[39,341,343],{"class":41,"line":342},8,[39,344,345],{"class":100},"\u002F\u002F \"Thursday, 28 May 2026 at 19:00\" (BST, UTC+1)\n",[240,347,349],{"id":348},"list-available-timezones","List Available Timezones",[29,351,353],{"className":91,"code":352,"language":93,"meta":34,"style":34},"const zones = Intl.supportedValuesOf(\"timeZone\")\n\u002F\u002F [\"Africa\u002FAbidjan\", \"Africa\u002FAccra\", ..., \"America\u002FNew_York\", ...]\n",[36,354,355,376],{"__ignoreMap":34},[39,356,357,359,362,364,366,369,371,374],{"class":41,"line":42},[39,358,107],{"class":106},[39,360,361],{"class":110}," zones",[39,363,114],{"class":106},[39,365,284],{"class":124},[39,367,368],{"class":120},"supportedValuesOf",[39,370,125],{"class":124},[39,372,373],{"class":128},"\"timeZone\"",[39,375,132],{"class":124},[39,377,378],{"class":41,"line":48},[39,379,380],{"class":100},"\u002F\u002F [\"Africa\u002FAbidjan\", \"Africa\u002FAccra\", ..., \"America\u002FNew_York\", ...]\n",[240,382,384],{"id":383},"get-the-offset-for-a-specific-date","Get the Offset for a Specific Date",[29,386,388],{"className":91,"code":387,"language":93,"meta":34,"style":34},"const formatter = new Intl.DateTimeFormat(\"en-US\", {\n  timeZone: \"America\u002FNew_York\",\n  timeZoneName: \"shortOffset\",\n})\n\nformatter.format(new Date(\"2026-01-15T12:00:00Z\"))\n\u002F\u002F \"1\u002F15\u002F2026, GMT-5\" (EST)\n\nformatter.format(new Date(\"2026-07-15T12:00:00Z\"))\n\u002F\u002F \"7\u002F15\u002F2026, GMT-4\" (EDT)\n",[36,389,390,412,421,431,436,440,462,467,471,491],{"__ignoreMap":34},[39,391,392,394,397,399,401,403,405,407,410],{"class":41,"line":42},[39,393,107],{"class":106},[39,395,396],{"class":110}," formatter",[39,398,114],{"class":106},[39,400,117],{"class":106},[39,402,284],{"class":124},[39,404,287],{"class":120},[39,406,125],{"class":124},[39,408,409],{"class":128},"\"en-US\"",[39,411,295],{"class":124},[39,413,414,416,419],{"class":41,"line":48},[39,415,300],{"class":124},[39,417,418],{"class":128},"\"America\u002FNew_York\"",[39,420,306],{"class":124},[39,422,423,426,429],{"class":41,"line":54},[39,424,425],{"class":124},"  timeZoneName: ",[39,427,428],{"class":128},"\"shortOffset\"",[39,430,306],{"class":124},[39,432,433],{"class":41,"line":61},[39,434,435],{"class":124},"})\n",[39,437,438],{"class":41,"line":67},[39,439,58],{"emptyLinePlaceholder":57},[39,441,442,445,447,449,452,454,456,459],{"class":41,"line":319},[39,443,444],{"class":124},"formatter.",[39,446,336],{"class":120},[39,448,125],{"class":124},[39,450,451],{"class":106},"new",[39,453,121],{"class":120},[39,455,125],{"class":124},[39,457,458],{"class":128},"\"2026-01-15T12:00:00Z\"",[39,460,461],{"class":124},"))\n",[39,463,464],{"class":41,"line":330},[39,465,466],{"class":100},"\u002F\u002F \"1\u002F15\u002F2026, GMT-5\" (EST)\n",[39,468,469],{"class":41,"line":342},[39,470,58],{"emptyLinePlaceholder":57},[39,472,474,476,478,480,482,484,486,489],{"class":41,"line":473},9,[39,475,444],{"class":124},[39,477,336],{"class":120},[39,479,125],{"class":124},[39,481,451],{"class":106},[39,483,121],{"class":120},[39,485,125],{"class":124},[39,487,488],{"class":128},"\"2026-07-15T12:00:00Z\"",[39,490,461],{"class":124},[39,492,494],{"class":41,"line":493},10,[39,495,496],{"class":100},"\u002F\u002F \"7\u002F15\u002F2026, GMT-4\" (EDT)\n",[15,498,499,500,502],{},"The ",[36,501,237],{}," API handles DST automatically. Use it for display wherever possible.",[10,504,506],{"id":505},"timezone-libraries","Timezone Libraries",[15,508,499,509,511],{},[36,510,237],{}," API covers most display needs, but complex operations — arithmetic, parsing, range queries — benefit from dedicated libraries.",[513,514,515,534],"table",{},[516,517,518],"thead",{},[519,520,521,525,528,531],"tr",{},[522,523,524],"th",{},"Library",[522,526,527],{},"Size",[522,529,530],{},"Strengths",[522,532,533],{},"Weaknesses",[535,536,537,558,574],"tbody",{},[519,538,539,545,548,551],{},[540,541,542],"td",{},[36,543,544],{},"date-fns-tz",[540,546,547],{},"~3 KB",[540,549,550],{},"Modular, tree-shakable, immutable",[540,552,553,554,557],{},"Requires ",[36,555,556],{},"date-fns"," base",[519,559,560,565,568,571],{},[540,561,562],{},[36,563,564],{},"luxon",[540,566,567],{},"~18 KB",[540,569,570],{},"Rich API, built on Intl, timezone-first",[540,572,573],{},"Larger bundle than alternatives",[519,575,576,582,585,588],{},[540,577,578,581],{},[36,579,580],{},"dayjs"," + plugin",[540,583,584],{},"~7 KB",[540,586,587],{},"Moment-compatible API, lightweight",[540,589,590],{},"Timezone support via optional plugin",[15,592,593,599],{},[74,594,595,596,174],{},"Avoid ",[36,597,598],{},"moment.js"," It is deprecated, mutable, and 67 KB uncompressed. Modern alternatives are smaller, immutable, and actively maintained.",[240,601,603],{"id":602},"date-fns-tz-example","date-fns-tz Example",[29,605,607],{"className":91,"code":606,"language":93,"meta":34,"style":34},"import { formatInTimeZone } from \"date-fns-tz\"\n\nconst date = new Date(\"2026-05-28T18:00:00Z\")\nformatInTimeZone(date, \"Asia\u002FTokyo\", \"yyyy-MM-dd HH:mm zzz\")\n\u002F\u002F \"2026-05-29 03:00 JST\"\n",[36,608,609,623,627,645,664],{"__ignoreMap":34},[39,610,611,614,617,620],{"class":41,"line":42},[39,612,613],{"class":106},"import",[39,615,616],{"class":124}," { formatInTimeZone } ",[39,618,619],{"class":106},"from",[39,621,622],{"class":128}," \"date-fns-tz\"\n",[39,624,625],{"class":41,"line":48},[39,626,58],{"emptyLinePlaceholder":57},[39,628,629,631,633,635,637,639,641,643],{"class":41,"line":54},[39,630,107],{"class":106},[39,632,111],{"class":110},[39,634,114],{"class":106},[39,636,117],{"class":106},[39,638,121],{"class":120},[39,640,125],{"class":124},[39,642,129],{"class":128},[39,644,132],{"class":124},[39,646,647,650,653,656,659,662],{"class":41,"line":61},[39,648,649],{"class":120},"formatInTimeZone",[39,651,652],{"class":124},"(date, ",[39,654,655],{"class":128},"\"Asia\u002FTokyo\"",[39,657,658],{"class":124},", ",[39,660,661],{"class":128},"\"yyyy-MM-dd HH:mm zzz\"",[39,663,132],{"class":124},[39,665,666],{"class":41,"line":67},[39,667,668],{"class":100},"\u002F\u002F \"2026-05-29 03:00 JST\"\n",[240,670,672],{"id":671},"luxon-example","Luxon Example",[29,674,676],{"className":91,"code":675,"language":93,"meta":34,"style":34},"import { DateTime } from \"luxon\"\n\nDateTime.fromISO(\"2026-05-28T18:00:00Z\")\n  .setZone(\"America\u002FLos_Angeles\")\n  .toFormat(\"yyyy-MM-dd hh:mm a ZZZZ\")\n\u002F\u002F \"2026-05-28 11:00 AM PDT\"\n",[36,677,678,690,694,708,723,737],{"__ignoreMap":34},[39,679,680,682,685,687],{"class":41,"line":42},[39,681,613],{"class":106},[39,683,684],{"class":124}," { DateTime } ",[39,686,619],{"class":106},[39,688,689],{"class":128}," \"luxon\"\n",[39,691,692],{"class":41,"line":48},[39,693,58],{"emptyLinePlaceholder":57},[39,695,696,699,702,704,706],{"class":41,"line":54},[39,697,698],{"class":124},"DateTime.",[39,700,701],{"class":120},"fromISO",[39,703,125],{"class":124},[39,705,129],{"class":128},[39,707,132],{"class":124},[39,709,710,713,716,718,721],{"class":41,"line":61},[39,711,712],{"class":124},"  .",[39,714,715],{"class":120},"setZone",[39,717,125],{"class":124},[39,719,720],{"class":128},"\"America\u002FLos_Angeles\"",[39,722,132],{"class":124},[39,724,725,727,730,732,735],{"class":41,"line":67},[39,726,712],{"class":124},[39,728,729],{"class":120},"toFormat",[39,731,125],{"class":124},[39,733,734],{"class":128},"\"yyyy-MM-dd hh:mm a ZZZZ\"",[39,736,132],{"class":124},[39,738,739],{"class":41,"line":319},[39,740,741],{"class":100},"\u002F\u002F \"2026-05-28 11:00 AM PDT\"\n",[10,743,745],{"id":744},"common-timezone-bugs-and-fixes","Common Timezone Bugs and Fixes",[240,747,749],{"id":748},"bug-adding-hours-across-dst","Bug: Adding Hours Across DST",[29,751,753],{"className":91,"code":752,"language":93,"meta":34,"style":34},"\u002F\u002F BAD — adds 24 hours in local time, which may be 23 or 25 real hours\nconst tomorrow = new Date()\ntomorrow.setDate(tomorrow.getDate() + 1)\n",[36,754,755,760,776],{"__ignoreMap":34},[39,756,757],{"class":41,"line":42},[39,758,759],{"class":100},"\u002F\u002F BAD — adds 24 hours in local time, which may be 23 or 25 real hours\n",[39,761,762,764,767,769,771,773],{"class":41,"line":48},[39,763,107],{"class":106},[39,765,766],{"class":110}," tomorrow",[39,768,114],{"class":106},[39,770,117],{"class":106},[39,772,121],{"class":120},[39,774,775],{"class":124},"()\n",[39,777,778,781,784,787,790,793,796,799],{"class":41,"line":54},[39,779,780],{"class":124},"tomorrow.",[39,782,783],{"class":120},"setDate",[39,785,786],{"class":124},"(tomorrow.",[39,788,789],{"class":120},"getDate",[39,791,792],{"class":124},"() ",[39,794,795],{"class":106},"+",[39,797,798],{"class":110}," 1",[39,800,132],{"class":124},[15,802,803,806],{},[74,804,805],{},"Fix:"," Work in UTC for arithmetic, then convert to local for display.",[240,808,810],{"id":809},"bug-parsing-without-an-offset","Bug: Parsing Without an Offset",[29,812,814],{"className":91,"code":813,"language":93,"meta":34,"style":34},"\u002F\u002F BAD — JavaScript interprets this as local time\nnew Date(\"2026-05-28T14:00:00\")\n\u002F\u002F Result varies by machine timezone\n\n\u002F\u002F GOOD — explicit UTC\nnew Date(\"2026-05-28T14:00:00Z\")\n\u002F\u002F Same result everywhere\n",[36,815,816,821,834,839,843,848,861],{"__ignoreMap":34},[39,817,818],{"class":41,"line":42},[39,819,820],{"class":100},"\u002F\u002F BAD — JavaScript interprets this as local time\n",[39,822,823,825,827,829,832],{"class":41,"line":48},[39,824,451],{"class":106},[39,826,121],{"class":120},[39,828,125],{"class":124},[39,830,831],{"class":128},"\"2026-05-28T14:00:00\"",[39,833,132],{"class":124},[39,835,836],{"class":41,"line":54},[39,837,838],{"class":100},"\u002F\u002F Result varies by machine timezone\n",[39,840,841],{"class":41,"line":61},[39,842,58],{"emptyLinePlaceholder":57},[39,844,845],{"class":41,"line":67},[39,846,847],{"class":100},"\u002F\u002F GOOD — explicit UTC\n",[39,849,850,852,854,856,859],{"class":41,"line":319},[39,851,451],{"class":106},[39,853,121],{"class":120},[39,855,125],{"class":124},[39,857,858],{"class":128},"\"2026-05-28T14:00:00Z\"",[39,860,132],{"class":124},[39,862,863],{"class":41,"line":330},[39,864,865],{"class":100},"\u002F\u002F Same result everywhere\n",[240,867,869],{"id":868},"bug-storing-timezone-names-separately","Bug: Storing Timezone Names Separately",[29,871,874],{"className":872,"code":873,"language":187,"meta":34},[185],"\u002F\u002F BAD\n{ \"time\": \"2026-05-28T14:00:00\", \"tz\": \"America\u002FNew_York\" }\n\n\u002F\u002F GOOD — the offset is part of the timestamp\n{ \"time\": \"2026-05-28T14:00:00-04:00\" }\n",[36,875,873],{"__ignoreMap":34},[15,877,878],{},"Storing the timezone separately forces every consumer to recompute the offset. Embedding the offset in the timestamp makes the value self-describing.",[10,880,882],{"id":881},"quick-checklist","Quick Checklist",[196,884,887,896,907,916,922,931,937],{"className":885},[886],"contains-task-list",[199,888,891,895],{"className":889},[890],"task-list-item",[892,893],"input",{"disabled":57,"type":894},"checkbox"," All timestamps stored in UTC",[199,897,899,901,902,170,904,906],{"className":898},[890],[892,900],{"disabled":57,"type":894}," ISO 8601 format with offset (",[36,903,219],{},[36,905,222],{},") used everywhere",[199,908,910,912,913,915],{"className":909},[890],[892,911],{"disabled":57,"type":894}," Local display uses ",[36,914,237],{}," API or a timezone-aware library",[199,917,919,921],{"className":918},[890],[892,920],{"disabled":57,"type":894}," No hardcoded UTC offsets in configuration",[199,923,925,927,928,930],{"className":924},[890],[892,926],{"disabled":57,"type":894}," No ",[36,929,598],{}," in dependencies",[199,932,934,936],{"className":933},[890],[892,935],{"disabled":57,"type":894}," Date arithmetic performed in UTC, not local time",[199,938,940,942],{"className":939},[890],[892,941],{"disabled":57,"type":894}," DST transition dates tested explicitly",[10,944,946],{"id":945},"related-guides","Related Guides",[196,948,949,956],{},[199,950,951],{},[952,953,955],"a",{"href":954},"\u002Fguides\u002Ftimezone-converter-guide","Timezone Converter Guide",[199,957,958],{},[952,959,961],{"href":960},"\u002Fguides\u002Ftime-and-date-tools","Time and Date Tools",[10,963,965],{"id":964},"try-it-yourself","Try It Yourself",[15,967,968,969,973,974,978],{},"Use our free ",[952,970,972],{"href":971},"\u002Ftools\u002Ftimezone-converter","Timezone Converter"," to verify timezone conversions — and the ",[952,975,977],{"href":976},"\u002Ftools\u002Ftimestamp-converter","Timestamp Converter"," to switch between Unix timestamps and readable dates.",[980,981,982],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":34,"searchDepth":48,"depth":48,"links":984},[985,986,987,988,989,994,998,1003,1004,1005],{"id":12,"depth":48,"text":13},{"id":23,"depth":48,"text":24},{"id":80,"depth":48,"text":81},{"id":177,"depth":48,"text":178},{"id":230,"depth":48,"text":231,"children":990},[991,992,993],{"id":242,"depth":54,"text":243},{"id":348,"depth":54,"text":349},{"id":383,"depth":54,"text":384},{"id":505,"depth":48,"text":506,"children":995},[996,997],{"id":602,"depth":54,"text":603},{"id":671,"depth":54,"text":672},{"id":744,"depth":48,"text":745,"children":999},[1000,1001,1002],{"id":748,"depth":54,"text":749},{"id":809,"depth":54,"text":810},{"id":868,"depth":54,"text":869},{"id":881,"depth":48,"text":882},{"id":945,"depth":48,"text":946},{"id":964,"depth":48,"text":965},"2026-05-28","Best practices for handling timezones in code — UTC, ISO 8601, the Intl API, and avoiding common timezone bugs.","md",{"immutable":57},"\u002Fguides\u002Fworking-with-timezones",{"title":5,"description":1007},"guides\u002Fworking-with-timezones","DVIjT79jmP9gxLCnHgzsGUEGpuax2gDZKABBuPcvCZc",1780401330930]