-
-
Notifications
You must be signed in to change notification settings - Fork 73
/
Copy pathTimezone.php
596 lines (584 loc) · 25.6 KB
/
Timezone.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
<?php
declare(strict_types=1);
namespace Psl\DateTime;
/**
* Enumerates all supported time zones, including UTC, all tzdata time zones, and all unique UTC offsets.
*
* This enum covers a comprehensive list of time zones used globally, including:
* - The Coordinated Universal Time (UTC).
* - All time zones defined in the IANA Time Zone Database (tzdata), such as "America/Los_Angeles".
* - All unique UTC offsets that are utilized by at least one of the supported time zones during their
* standard time or daylight saving time periods.
*
* The use of tzdata time zones instead of generic offsets or abbreviations (e.g., PST for Pacific Standard Time)
* is encouraged to avoid ambiguity, especially considering the dynamic nature of daylight saving time adjustments
* and the historical changes in time zone definitions. Time zone identifiers like "America/Los_Angeles" automatically
* account for these variations correctly across different dates.
*/
enum Timezone: string
{
case UTC = 'UTC';
case Minus1100 = '-11:00';
case Minus1000 = '-10:00';
case Minus0930 = '-09:30';
case Minus0900 = '-09:00';
case Minus0800 = '-08:00';
case Minus0700 = '-07:00';
case Minus0600 = '-06:00';
case Minus0500 = '-05:00';
case Minus0400 = '-04:00';
case Minus0330 = '-03:30';
case Minus0300 = '-03:00';
case Minus0230 = '-02:30';
case Minus0200 = '-02:00';
case Minus0100 = '-01:00';
case Plus0100 = '+01:00';
case Plus0200 = '+02:00';
case Plus0300 = '+03:00';
case Plus0330 = '+03:30';
case Plus0400 = '+04:00';
case Plus0430 = '+04:30';
case Plus0500 = '+05:00';
case Plus0530 = '+05:30';
case Plus0545 = '+05:45';
case Plus0600 = '+06:00';
case Plus0630 = '+06:30';
case Plus0700 = '+07:00';
case Plus0800 = '+08:00';
case Plus0845 = '+08:45';
case Plus0900 = '+09:00';
case Plus0930 = '+09:30';
case Plus1000 = '+10:00';
case Plus1030 = '+10:30';
case Plus1100 = '+11:00';
case Plus1200 = '+12:00';
case Plus1245 = '+12:45';
case Plus1300 = '+13:00';
case Plus1345 = '+13:45';
case Plus1400 = '+14:00';
case AfricaAbidjan = 'Africa/Abidjan';
case AfricaAccra = 'Africa/Accra';
case AfricaAddisAbaba = 'Africa/Addis_Ababa';
case AfricaAlgiers = 'Africa/Algiers';
case AfricaAsmara = 'Africa/Asmara';
case AfricaBamako = 'Africa/Bamako';
case AfricaBangui = 'Africa/Bangui';
case AfricaBanjul = 'Africa/Banjul';
case AfricaBissau = 'Africa/Bissau';
case AfricaBlantyre = 'Africa/Blantyre';
case AfricaBrazzaville = 'Africa/Brazzaville';
case AfricaBujumbura = 'Africa/Bujumbura';
case AfricaCairo = 'Africa/Cairo';
case AfricaCasablanca = 'Africa/Casablanca';
case AfricaCeuta = 'Africa/Ceuta';
case AfricaConakry = 'Africa/Conakry';
case AfricaDakar = 'Africa/Dakar';
case AfricaDarEsSalaam = 'Africa/Dar_es_Salaam';
case AfricaDjibouti = 'Africa/Djibouti';
case AfricaDouala = 'Africa/Douala';
case AfricaElAaiun = 'Africa/El_Aaiun';
case AfricaFreetown = 'Africa/Freetown';
case AfricaGaborone = 'Africa/Gaborone';
case AfricaHarare = 'Africa/Harare';
case AfricaJohannesburg = 'Africa/Johannesburg';
case AfricaJuba = 'Africa/Juba';
case AfricaKampala = 'Africa/Kampala';
case AfricaKhartoum = 'Africa/Khartoum';
case AfricaKigali = 'Africa/Kigali';
case AfricaKinshasa = 'Africa/Kinshasa';
case AfricaLagos = 'Africa/Lagos';
case AfricaLibreville = 'Africa/Libreville';
case AfricaLome = 'Africa/Lome';
case AfricaLuanda = 'Africa/Luanda';
case AfricaLubumbashi = 'Africa/Lubumbashi';
case AfricaLusaka = 'Africa/Lusaka';
case AfricaMalabo = 'Africa/Malabo';
case AfricaMaputo = 'Africa/Maputo';
case AfricaMaseru = 'Africa/Maseru';
case AfricaMbabane = 'Africa/Mbabane';
case AfricaMogadishu = 'Africa/Mogadishu';
case AfricaMonrovia = 'Africa/Monrovia';
case AfricaNairobi = 'Africa/Nairobi';
case AfricaNdjamena = 'Africa/Ndjamena';
case AfricaNiamey = 'Africa/Niamey';
case AfricaNouakchott = 'Africa/Nouakchott';
case AfricaOuagadougou = 'Africa/Ouagadougou';
case AfricaPorto = 'Africa/Porto-Novo';
case AfricaSaoTome = 'Africa/Sao_Tome';
case AfricaTripoli = 'Africa/Tripoli';
case AfricaTunis = 'Africa/Tunis';
case AfricaWindhoek = 'Africa/Windhoek';
case AmericaAdak = 'America/Adak';
case AmericaAnchorage = 'America/Anchorage';
case AmericaAnguilla = 'America/Anguilla';
case AmericaAntigua = 'America/Antigua';
case AmericaAraguaina = 'America/Araguaina';
case AmericaArgentinaBuenosAires = 'America/Argentina/Buenos_Aires';
case AmericaArgentinaCatamarca = 'America/Argentina/Catamarca';
case AmericaArgentinaCordoba = 'America/Argentina/Cordoba';
case AmericaArgentinaJujuy = 'America/Argentina/Jujuy';
case AmericaArgentinaLaRioja = 'America/Argentina/La_Rioja';
case AmericaArgentinaMendoza = 'America/Argentina/Mendoza';
case AmericaArgentinaRioGallegos = 'America/Argentina/Rio_Gallegos';
case AmericaArgentinaSalta = 'America/Argentina/Salta';
case AmericaArgentinaSanJuan = 'America/Argentina/San_Juan';
case AmericaArgentinaSanLuis = 'America/Argentina/San_Luis';
case AmericaArgentinaTucuman = 'America/Argentina/Tucuman';
case AmericaArgentinaUshuaia = 'America/Argentina/Ushuaia';
case AmericaAruba = 'America/Aruba';
case AmericaAsuncion = 'America/Asuncion';
case AmericaAtikokan = 'America/Atikokan';
case AmericaBahia = 'America/Bahia';
case AmericaBahiaBanderas = 'America/Bahia_Banderas';
case AmericaBarbados = 'America/Barbados';
case AmericaBelem = 'America/Belem';
case AmericaBelize = 'America/Belize';
case AmericaBlancSablon = 'America/Blanc-Sablon';
case AmericaBoaVista = 'America/Boa_Vista';
case AmericaBogota = 'America/Bogota';
case AmericaBoise = 'America/Boise';
case AmericaCambridgeBay = 'America/Cambridge_Bay';
case AmericaCampoGrande = 'America/Campo_Grande';
case AmericaCancun = 'America/Cancun';
case AmericaCaracas = 'America/Caracas';
case AmericaCayenne = 'America/Cayenne';
case AmericaCayman = 'America/Cayman';
case AmericaChicago = 'America/Chicago';
case AmericaChihuahua = 'America/Chihuahua';
case AmericaCostaRica = 'America/Costa_Rica';
case AmericaCreston = 'America/Creston';
case AmericaCuiaba = 'America/Cuiaba';
case AmericaCuracao = 'America/Curacao';
case AmericaDanmarkshavn = 'America/Danmarkshavn';
case AmericaDawson = 'America/Dawson';
case AmericaDawsonCreek = 'America/Dawson_Creek';
case AmericaDenver = 'America/Denver';
case AmericaDetroit = 'America/Detroit';
case AmericaDominica = 'America/Dominica';
case AmericaEdmonton = 'America/Edmonton';
case AmericaEirunepe = 'America/Eirunepe';
case AmericaElSalvador = 'America/El_Salvador';
case AmericaFortNelson = 'America/Fort_Nelson';
case AmericaFortaleza = 'America/Fortaleza';
case AmericaGlaceBay = 'America/Glace_Bay';
case AmericaGooseBay = 'America/Goose_Bay';
case AmericaGrandTurk = 'America/Grand_Turk';
case AmericaGrenada = 'America/Grenada';
case AmericaGuadeloupe = 'America/Guadeloupe';
case AmericaGuatemala = 'America/Guatemala';
case AmericaGuayaquil = 'America/Guayaquil';
case AmericaGuyana = 'America/Guyana';
case AmericaHalifax = 'America/Halifax';
case AmericaHavana = 'America/Havana';
case AmericaHermosillo = 'America/Hermosillo';
case AmericaIndianaIndianapolis = 'America/Indiana/Indianapolis';
case AmericaIndianaKnox = 'America/Indiana/Knox';
case AmericaIndianaMarengo = 'America/Indiana/Marengo';
case AmericaIndianaPetersburg = 'America/Indiana/Petersburg';
case AmericaIndianaTellCity = 'America/Indiana/Tell_City';
case AmericaIndianaVevay = 'America/Indiana/Vevay';
case AmericaIndianaVincennes = 'America/Indiana/Vincennes';
case AmericaIndianaWinamac = 'America/Indiana/Winamac';
case AmericaInuvik = 'America/Inuvik';
case AmericaIqaluit = 'America/Iqaluit';
case AmericaJamaica = 'America/Jamaica';
case AmericaJuneau = 'America/Juneau';
case AmericaKentuckyLouisville = 'America/Kentucky/Louisville';
case AmericaKentuckyMonticello = 'America/Kentucky/Monticello';
case AmericaKralendijk = 'America/Kralendijk';
case AmericaLaPaz = 'America/La_Paz';
case AmericaLima = 'America/Lima';
case AmericaLosAngeles = 'America/Los_Angeles';
case AmericaLowerPrinces = 'America/Lower_Princes';
case AmericaMaceio = 'America/Maceio';
case AmericaManagua = 'America/Managua';
case AmericaManaus = 'America/Manaus';
case AmericaMarigot = 'America/Marigot';
case AmericaMartinique = 'America/Martinique';
case AmericaMatamoros = 'America/Matamoros';
case AmericaMazatlan = 'America/Mazatlan';
case AmericaMenominee = 'America/Menominee';
case AmericaMerida = 'America/Merida';
case AmericaMetlakatla = 'America/Metlakatla';
case AmericaMexicoCity = 'America/Mexico_City';
case AmericaMiquelon = 'America/Miquelon';
case AmericaMoncton = 'America/Moncton';
case AmericaMonterrey = 'America/Monterrey';
case AmericaMontevideo = 'America/Montevideo';
case AmericaMontserrat = 'America/Montserrat';
case AmericaNassau = 'America/Nassau';
case AmericaNewYork = 'America/New_York';
case AmericaNipigon = 'America/Nipigon';
case AmericaNome = 'America/Nome';
case AmericaNoronha = 'America/Noronha';
case AmericaNorthDakotaBeulah = 'America/North_Dakota/Beulah';
case AmericaNorthDakotaCenter = 'America/North_Dakota/Center';
case AmericaNorthDakotaNewSalem = 'America/North_Dakota/New_Salem';
case AmericaNuuk = 'America/Nuuk';
case AmericaOjinaga = 'America/Ojinaga';
case AmericaPanama = 'America/Panama';
case AmericaPangnirtung = 'America/Pangnirtung';
case AmericaParamaribo = 'America/Paramaribo';
case AmericaPhoenix = 'America/Phoenix';
case AmericaPortAuPrince = 'America/Port-au-Prince';
case AmericaPortOfSpain = 'America/Port_of_Spain';
case AmericaPortoVelho = 'America/Porto_Velho';
case AmericaPuertoRico = 'America/Puerto_Rico';
case AmericaPuntaArenas = 'America/Punta_Arenas';
case AmericaRainyRiver = 'America/Rainy_River';
case AmericaRankinInlet = 'America/Rankin_Inlet';
case AmericaRecife = 'America/Recife';
case AmericaRegina = 'America/Regina';
case AmericaResolute = 'America/Resolute';
case AmericaRioBranco = 'America/Rio_Branco';
case AmericaSantarem = 'America/Santarem';
case AmericaSantiago = 'America/Santiago';
case AmericaSantoDomingo = 'America/Santo_Domingo';
case AmericaSaoPaulo = 'America/Sao_Paulo';
case AmericaScoresbysund = 'America/Scoresbysund';
case AmericaSitka = 'America/Sitka';
case AmericaStBarthelemy = 'America/St_Barthelemy';
case AmericaStJohns = 'America/St_Johns';
case AmericaStKitts = 'America/St_Kitts';
case AmericaStLucia = 'America/St_Lucia';
case AmericaStThomas = 'America/St_Thomas';
case AmericaStVincent = 'America/St_Vincent';
case AmericaSwiftCurrent = 'America/Swift_Current';
case AmericaTegucigalpa = 'America/Tegucigalpa';
case AmericaThule = 'America/Thule';
case AmericaThunderBay = 'America/Thunder_Bay';
case AmericaTijuana = 'America/Tijuana';
case AmericaToronto = 'America/Toronto';
case AmericaTortola = 'America/Tortola';
case AmericaVancouver = 'America/Vancouver';
case AmericaWhitehorse = 'America/Whitehorse';
case AmericaWinnipeg = 'America/Winnipeg';
case AmericaYakutat = 'America/Yakutat';
case AmericaYellowknife = 'America/Yellowknife';
case AntarcticaCasey = 'Antarctica/Casey';
case AntarcticaDavis = 'Antarctica/Davis';
case AntarcticaDumontDUrville = 'Antarctica/DumontDUrville';
case AntarcticaMacquarie = 'Antarctica/Macquarie';
case AntarcticaMawson = 'Antarctica/Mawson';
case AntarcticaMcMurdo = 'Antarctica/McMurdo';
case AntarcticaPalmer = 'Antarctica/Palmer';
case AntarcticaRothera = 'Antarctica/Rothera';
case AntarcticaSyowa = 'Antarctica/Syowa';
case AntarcticaTroll = 'Antarctica/Troll';
case AntarcticaVostok = 'Antarctica/Vostok';
case ArcticLongyearbyen = 'Arctic/Longyearbyen';
case AsiaAden = 'Asia/Aden';
case AsiaAlmaty = 'Asia/Almaty';
case AsiaAmman = 'Asia/Amman';
case AsiaAnadyr = 'Asia/Anadyr';
case AsiaAqtau = 'Asia/Aqtau';
case AsiaAqtobe = 'Asia/Aqtobe';
case AsiaAshgabat = 'Asia/Ashgabat';
case AsiaAtyrau = 'Asia/Atyrau';
case AsiaBaghdad = 'Asia/Baghdad';
case AsiaBahrain = 'Asia/Bahrain';
case AsiaBaku = 'Asia/Baku';
case AsiaBangkok = 'Asia/Bangkok';
case AsiaBarnaul = 'Asia/Barnaul';
case AsiaBeirut = 'Asia/Beirut';
case AsiaBishkek = 'Asia/Bishkek';
case AsiaBrunei = 'Asia/Brunei';
case AsiaChita = 'Asia/Chita';
case AsiaChoibalsan = 'Asia/Choibalsan';
case AsiaColombo = 'Asia/Colombo';
case AsiaDamascus = 'Asia/Damascus';
case AsiaDhaka = 'Asia/Dhaka';
case AsiaDili = 'Asia/Dili';
case AsiaDubai = 'Asia/Dubai';
case AsiaDushanbe = 'Asia/Dushanbe';
case AsiaFamagusta = 'Asia/Famagusta';
case AsiaGaza = 'Asia/Gaza';
case AsiaHebron = 'Asia/Hebron';
case AsiaHoChiMinh = 'Asia/Ho_Chi_Minh';
case AsiaHongKong = 'Asia/Hong_Kong';
case AsiaHovd = 'Asia/Hovd';
case AsiaIrkutsk = 'Asia/Irkutsk';
case AsiaJakarta = 'Asia/Jakarta';
case AsiaJayapura = 'Asia/Jayapura';
case AsiaJerusalem = 'Asia/Jerusalem';
case AsiaKabul = 'Asia/Kabul';
case AsiaKamchatka = 'Asia/Kamchatka';
case AsiaKarachi = 'Asia/Karachi';
case AsiaKathmandu = 'Asia/Kathmandu';
case AsiaKhandyga = 'Asia/Khandyga';
case AsiaKolkata = 'Asia/Kolkata';
case AsiaKrasnoyarsk = 'Asia/Krasnoyarsk';
case AsiaKualaLumpur = 'Asia/Kuala_Lumpur';
case AsiaKuching = 'Asia/Kuching';
case AsiaKuwait = 'Asia/Kuwait';
case AsiaMacau = 'Asia/Macau';
case AsiaMagadan = 'Asia/Magadan';
case AsiaMakassar = 'Asia/Makassar';
case AsiaManila = 'Asia/Manila';
case AsiaMuscat = 'Asia/Muscat';
case AsiaNicosia = 'Asia/Nicosia';
case AsiaNovokuznetsk = 'Asia/Novokuznetsk';
case AsiaNovosibirsk = 'Asia/Novosibirsk';
case AsiaOmsk = 'Asia/Omsk';
case AsiaOral = 'Asia/Oral';
case AsiaPhnomPenh = 'Asia/Phnom_Penh';
case AsiaPontianak = 'Asia/Pontianak';
case AsiaPyongyang = 'Asia/Pyongyang';
case AsiaQatar = 'Asia/Qatar';
case AsiaQostanay = 'Asia/Qostanay';
case AsiaQyzylorda = 'Asia/Qyzylorda';
case AsiaRiyadh = 'Asia/Riyadh';
case AsiaSakhalin = 'Asia/Sakhalin';
case AsiaSamarkand = 'Asia/Samarkand';
case AsiaSeoul = 'Asia/Seoul';
case AsiaShanghai = 'Asia/Shanghai';
case AsiaSingapore = 'Asia/Singapore';
case AsiaSrednekolymsk = 'Asia/Srednekolymsk';
case AsiaTaipei = 'Asia/Taipei';
case AsiaTashkent = 'Asia/Tashkent';
case AsiaTbilisi = 'Asia/Tbilisi';
case AsiaTehran = 'Asia/Tehran';
case AsiaThimphu = 'Asia/Thimphu';
case AsiaTokyo = 'Asia/Tokyo';
case AsiaTomsk = 'Asia/Tomsk';
case AsiaUlaanbaatar = 'Asia/Ulaanbaatar';
case AsiaUrumqi = 'Asia/Urumqi';
case AsiaUstNera = 'Asia/Ust-Nera';
case AsiaVientiane = 'Asia/Vientiane';
case AsiaVladivostok = 'Asia/Vladivostok';
case AsiaYakutsk = 'Asia/Yakutsk';
case AsiaYangon = 'Asia/Yangon';
case AsiaYekaterinburg = 'Asia/Yekaterinburg';
case AsiaYerevan = 'Asia/Yerevan';
case AtlanticAzores = 'Atlantic/Azores';
case AtlanticBermuda = 'Atlantic/Bermuda';
case AtlanticCanary = 'Atlantic/Canary';
case AtlanticCapeVerde = 'Atlantic/Cape_Verde';
case AtlanticFaroe = 'Atlantic/Faroe';
case AtlanticMadeira = 'Atlantic/Madeira';
case AtlanticReykjavik = 'Atlantic/Reykjavik';
case AtlanticSouthGeorgia = 'Atlantic/South_Georgia';
case AtlanticStHelena = 'Atlantic/St_Helena';
case AtlanticStanley = 'Atlantic/Stanley';
case AustraliaAdelaide = 'Australia/Adelaide';
case AustraliaBrisbane = 'Australia/Brisbane';
case AustraliaBrokenHill = 'Australia/Broken_Hill';
case AustraliaDarwin = 'Australia/Darwin';
case AustraliaEucla = 'Australia/Eucla';
case AustraliaHobart = 'Australia/Hobart';
case AustraliaLindeman = 'Australia/Lindeman';
case AustraliaLordHowe = 'Australia/Lord_Howe';
case AustraliaMelbourne = 'Australia/Melbourne';
case AustraliaPerth = 'Australia/Perth';
case AustraliaSydney = 'Australia/Sydney';
case EuropeAmsterdam = 'Europe/Amsterdam';
case EuropeAndorra = 'Europe/Andorra';
case EuropeAstrakhan = 'Europe/Astrakhan';
case EuropeAthens = 'Europe/Athens';
case EuropeBelgrade = 'Europe/Belgrade';
case EuropeBerlin = 'Europe/Berlin';
case EuropeBratislava = 'Europe/Bratislava';
case EuropeBrussels = 'Europe/Brussels';
case EuropeBucharest = 'Europe/Bucharest';
case EuropeBudapest = 'Europe/Budapest';
case EuropeBusingen = 'Europe/Busingen';
case EuropeChisinau = 'Europe/Chisinau';
case EuropeCopenhagen = 'Europe/Copenhagen';
case EuropeDublin = 'Europe/Dublin';
case EuropeGibraltar = 'Europe/Gibraltar';
case EuropeGuernsey = 'Europe/Guernsey';
case EuropeHelsinki = 'Europe/Helsinki';
case EuropeIsleofMan = 'Europe/Isle_of_Man';
case EuropeIstanbul = 'Europe/Istanbul';
case EuropeJersey = 'Europe/Jersey';
case EuropeKaliningrad = 'Europe/Kaliningrad';
case EuropeKiev = 'Europe/Kiev';
case EuropeKirov = 'Europe/Kirov';
case EuropeLisbon = 'Europe/Lisbon';
case EuropeLjubljana = 'Europe/Ljubljana';
case EuropeLondon = 'Europe/London';
case EuropeLuxembourg = 'Europe/Luxembourg';
case EuropeMadrid = 'Europe/Madrid';
case EuropeMalta = 'Europe/Malta';
case EuropeMariehamn = 'Europe/Mariehamn';
case EuropeMinsk = 'Europe/Minsk';
case EuropeMonaco = 'Europe/Monaco';
case EuropeMoscow = 'Europe/Moscow';
case EuropeOslo = 'Europe/Oslo';
case EuropeParis = 'Europe/Paris';
case EuropePodgorica = 'Europe/Podgorica';
case EuropePrague = 'Europe/Prague';
case EuropeRiga = 'Europe/Riga';
case EuropeRome = 'Europe/Rome';
case EuropeSamara = 'Europe/Samara';
case EuropeSanMarino = 'Europe/San_Marino';
case EuropeSarajevo = 'Europe/Sarajevo';
case EuropeSaratov = 'Europe/Saratov';
case EuropeSimferopol = 'Europe/Simferopol';
case EuropeSkopje = 'Europe/Skopje';
case EuropeSofia = 'Europe/Sofia';
case EuropeStockholm = 'Europe/Stockholm';
case EuropeTallinn = 'Europe/Tallinn';
case EuropeTirane = 'Europe/Tirane';
case EuropeUlyanovsk = 'Europe/Ulyanovsk';
case EuropeUzhgorod = 'Europe/Uzhgorod';
case EuropeVaduz = 'Europe/Vaduz';
case EuropeVatican = 'Europe/Vatican';
case EuropeVienna = 'Europe/Vienna';
case EuropeVilnius = 'Europe/Vilnius';
case EuropeVolgograd = 'Europe/Volgograd';
case EuropeWarsaw = 'Europe/Warsaw';
case EuropeZagreb = 'Europe/Zagreb';
case EuropeZaporozhye = 'Europe/Zaporozhye';
case EuropeZurich = 'Europe/Zurich';
case IndianAntananarivo = 'Indian/Antananarivo';
case IndianChagos = 'Indian/Chagos';
case IndianChristmas = 'Indian/Christmas';
case IndianCocos = 'Indian/Cocos';
case IndianComoro = 'Indian/Comoro';
case IndianKerguelen = 'Indian/Kerguelen';
case IndianMahe = 'Indian/Mahe';
case IndianMaldives = 'Indian/Maldives';
case IndianMauritius = 'Indian/Mauritius';
case IndianMayotte = 'Indian/Mayotte';
case IndianReunion = 'Indian/Reunion';
case PacificApia = 'Pacific/Apia';
case PacificAuckland = 'Pacific/Auckland';
case PacificBougainville = 'Pacific/Bougainville';
case PacificChatham = 'Pacific/Chatham';
case PacificChuuk = 'Pacific/Chuuk';
case PacificEaster = 'Pacific/Easter';
case PacificEfate = 'Pacific/Efate';
case PacificEnderbury = 'Pacific/Enderbury';
case PacificFakaofo = 'Pacific/Fakaofo';
case PacificFiji = 'Pacific/Fiji';
case PacificFunafuti = 'Pacific/Funafuti';
case PacificGalapagos = 'Pacific/Galapagos';
case PacificGambier = 'Pacific/Gambier';
case PacificGuadalcanal = 'Pacific/Guadalcanal';
case PacificGuam = 'Pacific/Guam';
case PacificHonolulu = 'Pacific/Honolulu';
case PacificKiritimati = 'Pacific/Kiritimati';
case PacificKosrae = 'Pacific/Kosrae';
case PacificKwajalein = 'Pacific/Kwajalein';
case PacificMajuro = 'Pacific/Majuro';
case PacificMarquesas = 'Pacific/Marquesas';
case PacificMidway = 'Pacific/Midway';
case PacificNauru = 'Pacific/Nauru';
case PacificNiue = 'Pacific/Niue';
case PacificNorfolk = 'Pacific/Norfolk';
case PacificNoumea = 'Pacific/Noumea';
case PacificPagoPago = 'Pacific/Pago_Pago';
case PacificPalau = 'Pacific/Palau';
case PacificPitcairn = 'Pacific/Pitcairn';
case PacificPohnpei = 'Pacific/Pohnpei';
case PacificPortMoresby = 'Pacific/Port_Moresby';
case PacificRarotonga = 'Pacific/Rarotonga';
case PacificSaipan = 'Pacific/Saipan';
case PacificTahiti = 'Pacific/Tahiti';
case PacificTarawa = 'Pacific/Tarawa';
case PacificTongatapu = 'Pacific/Tongatapu';
case PacificWake = 'Pacific/Wake';
case PacificWallis = 'Pacific/Wallis';
/**
* Retrieves the default timezone set in the PHP environment.
*
* @return self The default timezone as an enum instance.
*
* @psalm-mutation-free
*/
public static function default(): self
{
return Internal\default_timezone();
}
/**
* Calculates the total time zone offset for a given {@see TemporalInterface} instance.
*
* This total offset includes both the raw timezone offset and any daylight saving time (DST) adjustments applicable at the temporal instance's time.
*
* @param bool $local Indicates whether the temporal object's time should be treated as local time (`true`) or as UTC time (`false`).
*
* @return Duration The total offset from UTC as a Duration instance, including any DST adjustments.
*
* @psalm-mutation-free
*/
public function getOffset(TemporalInterface $temporal, bool $local = false): Duration
{
$intl_timezone = Internal\to_intl_timezone($this);
$timestamp_millis = $temporal->getTimestamp()->getSeconds() * MILLISECONDS_PER_SECOND;
/** @psalm-suppress ImpureMethodCall - mutation free */
$intl_timezone->getOffset($timestamp_millis, $local, $raw_offset, $dst_offset);
return Duration::milliseconds($raw_offset + $dst_offset);
}
/**
* Calculates the raw time zone offset for the current timezone, excluding any daylight saving time (DST) adjustments.
*
* This method retrieves the fixed offset from UTC for the timezone without considering any seasonal adjustments
* that might apply due to DST. It's particularly useful for understanding the base offset of a timezone.
*
* @psalm-mutation-free
*/
public function getRawOffset(): Duration
{
/** @psalm-suppress ImpureMethodCall - mutation free */
return Duration::milliseconds(Internal\to_intl_timezone($this)->getRawOffset());
}
/**
* Calculates the daylight saving time (DST) offset for a given {@see TemporalInterface} instance at its specific time.
*
* This DST offset is the adjustment added to the raw timezone offset, if DST is in effect at the temporal instance's time.
*
* @param bool $local Indicates whether the temporal object's time should be treated as local time (`true`) or as UTC time (`false`).
*
* @return Duration The DST offset as a Duration instance. If DST is not in effect, the offset will be zero.
*
* @psalm-mutation-free
*/
public function getDaylightSavingTimeOffset(TemporalInterface $temporal, bool $local = false): Duration
{
$intl_timezone = Internal\to_intl_timezone($this);
$timestamp_millis = $temporal->getTimestamp()->getSeconds() * MILLISECONDS_PER_SECOND;
/** @psalm-suppress ImpureMethodCall - mutation free */
$intl_timezone->getOffset($timestamp_millis, $local, $_, $dst_offset);
return Duration::milliseconds($dst_offset);
}
/**
* Determines whether the current timezone observes Daylight Saving Time (DST).
*
* This method checks if the timezone has any DST rules and if DST is applied at any point during the year.
*
* @return bool True if the timezone uses Daylight Saving Time at any point in the year, false otherwise.
*
* @psalm-mutation-free
*/
public function usesDaylightSavingTime(): bool
{
/** @psalm-suppress ImpureMethodCall - mutation free */
return Internal\to_intl_timezone($this)->useDaylightTime();
}
/**
* Retrieves the amount of time added during Daylight Saving Time for the current timezone.
*
* This method returns the typical adjustment made to the local time when DST is in effect.
*
* If the timezone does not observe DST or if there is no current DST adjustment (e.g., outside of DST periods),
* the method will return a Duration of zero.
*
* @psalm-mutation-free
*/
public function getDaylightSavingTimeSavings(): Duration
{
/** @psalm-suppress ImpureMethodCall - mutation free */
return Duration::milliseconds(Internal\to_intl_timezone($this)->getDSTSavings());
}
/**
* Determines whether the current timezone has the same rules as another specified timezone.
*
* @psalm-mutation-free
*/
public function hasTheSameRulesAs(Timezone $other): bool
{
/** @psalm-suppress ImpureMethodCall - mutation free */
return Internal\to_intl_timezone($this)->hasSameRules(Internal\to_intl_timezone($other));
}
}