I tried to find a good script for getting all timezones and their offset, but there is nothing good, that’s why I spent sometime to make something that can help everybody who is working with different timezones.

$timezones = array(
        "zone0" => array (
                    "name" => "(GMT-10:00) Hawaii",
                    "value" => "Pacific/Honolulu"
                ),
        "zone1" => array (
                    "name" => "(GMT-09:00) Alaska",
                    "value" => "America/Nome"
                ),
        "zone2" => array (
                    "name" => "(GMT-08:00) Pacific Time (US & Canada); Los Angeles",
                    "value" => "America/Los_Angeles"
                ),
        "zone3" => array (
                    "name" => "(GMT-08:00) Pacific Time (US & Canada); Tijuana",
                    "value" => "America/Tijuana"
                ),
        "zone4" => array (
                    "name" => "(GMT-07:00) Arizona",
                    "value" => "America/Phoenix"
                ),
        "zone5" => array (
                    "name" => "(GMT-07:00) Mountain Time (US & Canada)",
                    "value" => "America/Denver"
                ),
        "zone6" => array (
                    "name" => "(GMT-06:00) Central Time (US & Canada)",
                    "value" => "America/Chicago"
                ),
        "zone7" => array (
                    "name" => "(GMT-06:00) Eastern Time - Indiana - Starke County",
                    "value" => "America/Indiana/Knox"
                ),
        "zone8" => array (
                    "name" => "(GMT-06:00) Mexico City, Tegucigalpa",
                    "value" => "America/Mexico_City"
                ),
        "zone9" => array (
                    "name" => "(GMT-06:00) Saskatchewan",
                    "value" => "America/Regina"
                ),
        "zone10" => array (
                    "name" => "(GMT-05:00) Bogota, Lima",
                    "value" => "America/Bogota"
                ),
        "zone11" => array (
                    "name" => "(GMT-05:00) Eastern Time (US & Canada)",
                    "value" => "America/New_York"
                ),
        "zone12" => array (
                    "name" => "(GMT-05:00) Eastern Time - Indiana - most locations",
                    "value" => "America/Indiana/Indianapolis"
                ),
        "zone13" => array (
                    "name" => "(GMT-04:30 Caracas",
                    "value" => "America/Caracas"
                ),
        "zone14" => array (
                    "name" => "(GMT-04:00) Atlantic Time (Canada)",
                    "value" => "America/Halifax"
                ),
        "zone15" => array (
                    "name" => "(GMT-04:00) La Paz",
                    "value" => "America/La_Paz"
                ),
        "zone16" => array (
                    "name" => "(GMT-03:30) Newfoundland",
                    "value" => "America/St_Johns"
                ),
        "zone17" => array (
                    "name" => "(GMT-03:00) E Argentina (BA, DF, SC, TF)",
                    "value" => "America/Buenos_Aires"
                ),
        "zone18" => array (
                    "name" => "(GMT-03:00) NE Brazil (MA, PI, CE, RN, PB)",
                    "value" => "America/Fortaleza"
                ),
        "zone19" => array (
                    "name" => "(GMT-03:00) Pernambuco",
                    "value" => "America/Recife"
                ),
        "zone20" => array (
                    "name" => "(GMT-03:00) S & SE Brazil (GO, DF, MG, ES, RJ, SP, PR, SC, RS)",
                    "value" => "America/Sao_Paulo"
                ),
        "zone21" => array (
                    "name" => "(GMT-02:00) Mid-Atlantic",
                    "value" => "Atlantic/South_Georgia"
                ),
        "zone22" => array (
                    "name" => "(GMT-01:00) Azores, Cape Verde Island",
                    "value" => "Atlantic/Azores"
                ),
        "zone23" => array (
                    "name" => "GMT (no DST) Tangiers, Casablanca",
                    "value" => "Africa/Casablanca"
                ),
        "zone24" => array (
                    "name" => "GMT (Greenwich Mean Time) Dublin, Edinburgh, London",
                    "value" => "Europe/London"
                ),
        "zone25" => array (
                    "name" => "(GMT+01:00) Berlin, Stockholm, Rome, Bern, Brussels",
                    "value" => "Europe/Berlin"
                ),
        "zone26" => array (
                    "name" => "(GMT+01:00) Lisbon, Warsaw",
                    "value" => "Europe/Lisbon"
                ),
        "zone27" => array (
                    "name" => "(GMT+01:00) Paris, Madrid",
                    "value" => "Europe/Paris"
                ),
        "zone28" => array (
                    "name" => "(GMT+01:00) Prague",
                    "value" => "Europe/Prague"
                ),
        "zone29" => array (
                    "name" => "(GMT+02:00) Athens, Helsinki, Istanbul",
                    "value" => "Europe/Athens"
                ),
        "zone30" => array (
                    "name" => "(GMT+02:00) Cairo",
                    "value" => "Africa/Cairo"
                ),
        "zone31" => array (
                    "name" => "(GMT+02:00) Eastern Europe",
                    "value" => "EET"
                ),
        "zone32" => array (
                    "name" => "(GMT+02:00) Harare, Pretoria",
                    "value" => "Africa/Harare"
                ),
        "zone33" => array (
                    "name" => "(GMT+02:00) Israel",
                    "value" => "Asia/Jerusalem"
                ),
        "zone34" => array (
                    "name" => "(GMT+03:00) Baghdad, Kuwait, Nairobi, Riyadh",
                    "value" => "Asia/Baghdad"
                ),
        "zone35" => array (
                    "name" => "(GMT+03:00) Moscow, St. Petersburg, Volgograd",
                    "value" => "Europe/Moscow"
                ),
        "zone36" => array (
                    "name" => "(GMT+03:30) Tehran",
                    "value" => "Asia/Tehran"
                ),
        "zone37" => array (
                    "name" => "(GMT+04:00) Abu Dhabi, Muscat, Tbilisi, Kazan",
                    "value" => "Asia/Tbilisi"
                ),
        "zone38" => array (
                    "name" => "(GMT+04:30 Kabul",
                    "value" => "Asia/Kabul"
                ),
        "zone39" => array (
                    "name" => "(GMT+05:00) Islamabad, Karachi",
                    "value" => "Asia/Karachi"
                ),
        "zone40" => array (
                    "name" => "(GMT+05:00) Sverdlovsk, Tashkent",
                    "value" => "Asia/Yekaterinburg"
                ),
        "zone41" => array (
                    "name" => "(GMT+05:30) Mumbai, Kolkata, Chennai, New Delhi",
                    "value" => "Asia/Calcutta"
                ),
        "zone42" => array (
                    "name" => "(GMT+05:45) Kathmandu, Nepal",
                    "value" => "Asia/Katmandu"
                ),
        "zone43" => array (
                    "name" => "(GMT+06:00) Almaty, Dhaka",
                    "value" => "Asia/Almaty"
                ),
        "zone44" => array (
                    "name" => "(GMT+06:00) Omsk, Novosibirsk",
                    "value" => "Asia/Omsk"
                ),
        "zone45" => array (
                    "name" => "(GMT+07:00) Bangkok, Jakarta, Hanoi",
                    "value" => "Asia/Bangkok"
                ),
        "zone46" => array (
                    "name" => "(GMT+07:00) Krasnoyarsk",
                    "value" => "Asia/Krasnoyarsk"
                ),
        "zone47" => array (
                    "name" => "(GMT+08:00) Beijing, Chongqing, Urumqi",
                    "value" => "Asia/Shanghai"
                ),
        "zone48" => array (
                    "name" => "(GMT+08:00) Hong Kong SAR, Perth, Singapore, Taipei",
                    "value" => "Australia/Perth"
                ),
        "zone49" => array (
                    "name" => "(GMT+09:00) Tokyo, Osaka, Sapporo, Seoul, Yakutsk",
                    "value" => "Asia/Tokyo"
                ),
        "zone50" => array (
                    "name" => "(GMT+09:30) Adelaide",
                    "value" => "Australia/Adelaide"
                ),
        "zone51" => array (
                    "name" => "(GMT+09:30) Darwin",
                    "value" => "Australia/Darwin"
                ),
        "zone52" => array (
                    "name" => "(GMT+10:00) Brisbane, Melbourne, Sydney",
                    "value" => "Australia/Brisbane"
                ),
        "zone53" => array (
                    "name" => "(GMT+10:00) Guam, Port Moresby",
                    "value" => "Pacific/Guam"
                ),
        "zone54" => array (
                    "name" => "(GMT+10:00) Vladivostok",
                    "value" => "Asia/Vladivostok"
                ),
        "zone55" => array (
                    "name" => "(GMT+11:00) Hobart",
                    "value" => "Australia/Hobart"
                ),
        "zone56" => array (
                    "name" => "(GMT+12:00) Eniwetok, Kwajalein",
                    "value" => "Pacific/Kwajalein"
                ),
        "zone57" => array (
                    "name" => "(GMT+12:00) Fiji Islands, Marshall Islands",
                    "value" => "Pacific/Fiji"
                ),
        "zone58" => array (
                    "name" => "(GMT+12:00) Kamchatka",
                    "value" => "Asia/Kamchatka"
                ),
        "zone59" => array (
                    "name" => "(GMT+12:00) Magadan, Solomon Islands, New Caledonia",
                    "value" => "Asia/Magadan"
                ),
        "zone60" => array (
                    "name" => "(GMT+12:00) Wellington, Auckland",
                    "value" => "Pacific/Auckland"
                )
    );
   
    //we count all elements of the array
    $count_zones = count($timezones);
   
    //we have to get all zones
    for($i = 0; $i < $count_zones; $i++) {
       
        //we set the time zone
        date_default_timezone_set($timezones['zone'.$i]['value']);
       
        $insert = $db->query("INSERT INTO table (offset, name) VALUES ('". date('Z') ."', '". $timezones['zone'.$i]['name'] ."')");
    }