Problème calcul d'offset UTC par getTransitions ou DateTime.

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par ortolojf, 21 Novembre 2020.

  1. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 522
    J'aime reçus:
    28
    Bonjour

    D'après le PHP Manual, pour calculer l'offset en secondes par rapport à GMT/UTC, il y a deux possibilités :

    PHP:
     
       
    /**
        **  1
        **/
        
    $dateTimeZone = new DateTimeZone('Europe/Paris');

      
    $dateTime = new DateTime("now"$dateTimeZone);

      
    $offset $dateTime->getOffset();   // par rapport à UTC.

      /**
       ** 2
       **/
        
    $dateTimeZone = new DateTimeZone('Europe/Paris');
     
        
    $theTime time();

        
    $transitions $dateTimeZone->getTransitions($theTime,$theTime);

        
    $offset $transitions['offset'];   // par rapport à UTC.


    Ma question : Quelle différence entre ces deux calculs de l'offset ?

    Merci beaucoup.
     
  2. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 522
    J'aime reçus:
    28
    Hé bé

    En prévision de la finalisation de ma routine de calcul de méridiens :

    Merci de me dire avec quelle précision vous souhaiteriez le filtrage.

    Amicalement.


    Code:
    
        AFRICA    -    Zone min/max : Africa/Dakar / Africa/Mogadishu    -    Longitude min/max : -17.43333 / 45.36666
        AMERICA    -    Zone min/max : America/Nome / America/Danmarkshavn    -    Longitude min/max : -165.40638 / -18.66666
        ANTARCTICA    -    Zone min/max : Antarctica/Rothera / Antarctica/McMurdo    -    Longitude min/max : -68.13333 / 166.6
        ARCTIC    -    Zone min/max :  / Arctic/Longyearbyen    -    Longitude min/max : 5000000 / 16
        ASIA    -    Zone min/max : Asia/Nicosia / Asia/Anadyr    -    Longitude min/max : 33.36666 / 177.48333
        ATLANTIC    -    Zone min/max : Atlantic/Bermuda / Atlantic/St_Helena    -    Longitude min/max : -64.76666 / -5.7
        AUSTRALIA    -    Zone min/max : Australia/Perth / Australia/Lord_Howe    -    Longitude min/max : 115.85 / 159.08333
        EUROPE    -    Zone min/max : Europe/Lisbon / Europe/Samara    -    Longitude min/max : -9.13333 / 50.15
        INDIAN    -    Zone min/max : Indian/Comoro / Indian/Christmas    -    Longitude min/max : 43.26666 / 105.71666
        PACIFIC    -    Zone min/max : Pacific/Midway / Pacific/Funafuti    -    Longitude min/max : -177.36666 / 179.21666
    
    
    
     
  3. christele2
    christele2 Guest
    Bonjour, pour te répondre il faudrait voir comment tu défini $transitions['offset'];
     
  4. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 522
    J'aime reçus:
    28
  5. christele2
    christele2 Guest
  6. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 522
    J'aime reçus:
    28
    Bonjour christele2

    Je ne programme pas en Java, seulement en PHP.

    Merci beaucoup de ton aide.

    Amicalement.
     
    christele2 apprécie ceci.
  7. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 522
    J'aime reçus:
    28
    Voilà, voilà

    Avec les noms de pays :

    Code:
    
        Pays
        AFRICA    Zone min/Pays min/Longitude min  : Africa/Dakar / Senegal / -17.43333
        AFRICA    Zone max/Pays max/Longitude max  : Africa/Mogadishu / Somalia / 45.36666
        AMERICA    Zone min/Pays min/Longitude min  : America/Nome / United States of America / -165.40638
        AMERICA    Zone max/Pays max/Longitude max  : America/Danmarkshavn / Greenland / -18.66666
        ANTARCTICA    Zone min/Pays min/Longitude min  : Antarctica/Rothera / Antarctica / -68.13333
        ANTARCTICA    Zone max/Pays max/Longitude max  : Antarctica/McMurdo / Antarctica / 166.6
        ARCTIC    Zone min/Pays min/Longitude min  : Arctic/Longyearbyen / Svalbard and Jan Mayen / 16
        ARCTIC    Zone max/Pays max/Longitude max  : Arctic/Longyearbyen / Svalbard and Jan Mayen / 16
        ASIA    Zone min/Pays min/Longitude min  : Asia/Nicosia / Cyprus / 33.36666
        ASIA    Zone max/Pays max/Longitude max  : Asia/Anadyr / Russian Federation / 177.48333
        ATLANTIC    Zone min/Pays min/Longitude min  : Atlantic/Bermuda / Bermuda / -64.76666
        ATLANTIC    Zone max/Pays max/Longitude max  : Atlantic/St_Helena / Saint Helena, Ascension and Tristan da Cunha / -5.7
        AUSTRALIA    Zone min/Pays min/Longitude min  : Australia/Perth / Australia / 115.85
        AUSTRALIA    Zone max/Pays max/Longitude max  : Australia/Lord_Howe / Australia / 159.08333
        EUROPE    Zone min/Pays min/Longitude min  : Europe/Lisbon / Portugal / -9.13333
        EUROPE    Zone max/Pays max/Longitude max  : Europe/Samara / Russian Federation / 50.15
        INDIAN    Zone min/Pays min/Longitude min  : Indian/Comoro / Comoros / 43.26666
        INDIAN    Zone max/Pays max/Longitude max  : Indian/Christmas / Christmas Island / 105.71666
        PACIFIC    Zone min/Pays min/Longitude min  : Pacific/Midway / United States Minor Outlying Islands / -177.36666
        PACIFIC    Zone max/Pays max/Longitude max  : Pacific/Funafuti / Tuvalu / 179.21666
    
    

    L'Australie n'a-t-elle pas un plus grand nombre de méridiens que 44° environ ?

    Pour KOogar : Je peux adapter le programme que j'ai fait avec des zones plus précises que AFRICA, AMERICA, etc...

    Dis-moi seulement.

    Merci beaucoup de votre aide.

    Amicalement.
     
  8. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 522
    J'aime reçus:
    28
    Cette fois-ci çà marche.

    Toutes les longitudes en ordre croissant par zone ( AFRICA, AMERICA etc... ), avec leurs zoneName et pays.

    Pour sélectionner par sample de longitudes.


    Code:
    
        Pays
        AFRICA    Zone / Pays / Longitude : Africa/Dakar / Senegal / -17.43333
        AFRICA    Zone / Pays / Longitude : Africa/Banjul / Gambia / -16.64999
        AFRICA    Zone / Pays / Longitude : Africa/Nouakchott / Mauritania / -15.95
        AFRICA    Zone / Pays / Longitude : Africa/Bissau / Guinea-Bissau / -15.58333
        AFRICA    Zone / Pays / Longitude : Africa/Conakry / Guinea / -13.71666
        AFRICA    Zone / Pays / Longitude : Africa/Freetown / Sierra Leone / -13.25
        AFRICA    Zone / Pays / Longitude : Africa/El_Aaiun / Western Sahara / -13.2
        AFRICA    Zone / Pays / Longitude : Africa/Monrovia / Liberia / -10.78333
        AFRICA    Zone / Pays / Longitude : Africa/Bamako / Mali / -8
        AFRICA    Zone / Pays / Longitude : Africa/Casablanca / Morocco / -7.58333
        AFRICA    Zone / Pays / Longitude : Africa/Ceuta / Spain / -5.31666
        AFRICA    Zone / Pays / Longitude : Africa/Abidjan / Côte di'Ivoire / -4.03333
        AFRICA    Zone / Pays / Longitude : Africa/Ouagadougou / Burkina Faso / -1.51666
        AFRICA    Zone / Pays / Longitude : Africa/Accra / Ghana / -0.21666
        AFRICA    Zone / Pays / Longitude : Africa/Lome / Togo / 1.21666
        AFRICA    Zone / Pays / Longitude : Africa/Niamey / Niger / 2.11666
        AFRICA    Zone / Pays / Longitude : Africa/Porto-Novo / Benin / 2.61666
        AFRICA    Zone / Pays / Longitude : Africa/Algiers / Algeria / 3.05
        AFRICA    Zone / Pays / Longitude : Africa/Lagos / Nigeria / 3.4
        AFRICA    Zone / Pays / Longitude : Africa/Sao_Tome / Sao Tome and Principe / 6.73333
        AFRICA    Zone / Pays / Longitude : Africa/Malabo / Equatorial Guinea / 8.78333
        AFRICA    Zone / Pays / Longitude : Africa/Libreville / Gabon / 9.44999
        AFRICA    Zone / Pays / Longitude : Africa/Douala / Cameroon / 9.69999
        AFRICA    Zone / Pays / Longitude : Africa/Tunis / Tunisia / 10.18333
        AFRICA    Zone / Pays / Longitude : Africa/Tripoli / Libya / 13.18333
        AFRICA    Zone / Pays / Longitude : Africa/Luanda / Angola / 13.23333
        AFRICA    Zone / Pays / Longitude : Africa/Ndjamena / Chad / 15.05
        AFRICA    Zone / Pays / Longitude : Africa/Brazzaville / Congo / 15.28333
        AFRICA    Zone / Pays / Longitude : Africa/Kinshasa / Congo, Democratic Republic of the / 15.3
        AFRICA    Zone / Pays / Longitude : Africa/Windhoek / Namibia / 17.1
        AFRICA    Zone / Pays / Longitude : Africa/Bangui / Central African Republic / 18.58333
        AFRICA    Zone / Pays / Longitude : Africa/Gaborone / Botswana / 25.91666
        AFRICA    Zone / Pays / Longitude : Africa/Lubumbashi / Congo, Democratic Republic of the / 27.46666
        AFRICA    Zone / Pays / Longitude : Africa/Maseru / Lesotho / 27.5
        AFRICA    Zone / Pays / Longitude : Africa/Johannesburg / South Africa / 28
        AFRICA    Zone / Pays / Longitude : Africa/Lusaka / Zambia / 28.28333
        AFRICA    Zone / Pays / Longitude : Africa/Bujumbura / Burundi / 29.36666
        AFRICA    Zone / Pays / Longitude : Africa/Kigali / Rwanda / 30.06666
        AFRICA    Zone / Pays / Longitude : Africa/Harare / Zimbabwe / 31.05
        AFRICA    Zone / Pays / Longitude : Africa/Mbabane / Eswatini / 31.1
        AFRICA    Zone / Pays / Longitude : Africa/Cairo / Egypt / 31.25
        AFRICA    Zone / Pays / Longitude : Africa/Juba / South Sudan / 31.61666
        AFRICA    Zone / Pays / Longitude : Africa/Kampala / Uganda / 32.41666
        AFRICA    Zone / Pays / Longitude : Africa/Khartoum / Sudan / 32.53333
        AFRICA    Zone / Pays / Longitude : Africa/Maputo / Mozambique / 32.58333
        AFRICA    Zone / Pays / Longitude : Africa/Blantyre / Malawi / 35
        AFRICA    Zone / Pays / Longitude : Africa/Nairobi / Kenya / 36.81666
        AFRICA    Zone / Pays / Longitude : Africa/Addis_Ababa / Ethiopia / 38.7
        AFRICA    Zone / Pays / Longitude : Africa/Asmara / Eritrea / 38.88333
        AFRICA    Zone / Pays / Longitude : Africa/Dar_es_Salaam / Tanzania, United Republic of / 39.28333
        AFRICA    Zone / Pays / Longitude : Africa/Djibouti / Djibouti / 43.15
        AMERICA    Zone / Pays / Longitude : America/Adak / United States of America / -176.65805
        AMERICA    Zone / Pays / Longitude : America/Nome / United States of America / -165.40638
        AMERICA    Zone / Pays / Longitude : America/Anchorage / United States of America / -149.90027
        AMERICA    Zone / Pays / Longitude : America/Yakutat / United States of America / -139.72722
        AMERICA    Zone / Pays / Longitude : America/Dawson / Canada / -139.41666
        AMERICA    Zone / Pays / Longitude : America/Sitka / United States of America / -135.30194
        AMERICA    Zone / Pays / Longitude : America/Whitehorse / Canada / -135.05
        AMERICA    Zone / Pays / Longitude : America/Juneau / United States of America / -134.41972
        AMERICA    Zone / Pays / Longitude : America/Inuvik / Canada / -133.71666
        AMERICA    Zone / Pays / Longitude : America/Metlakatla / United States of America / -131.57638
        AMERICA    Zone / Pays / Longitude : America/Vancouver / Canada / -123.11666
        AMERICA    Zone / Pays / Longitude : America/Fort_Nelson / Canada / -122.7
        AMERICA    Zone / Pays / Longitude : America/Dawson_Creek / Canada / -120.23333
        AMERICA    Zone / Pays / Longitude : America/Los_Angeles / United States of America / -118.24277
        AMERICA    Zone / Pays / Longitude : America/Tijuana / Mexico / -117.01666
        AMERICA    Zone / Pays / Longitude : America/Creston / Canada / -116.51666
        AMERICA    Zone / Pays / Longitude : America/Boise / United States of America / -116.2025
        AMERICA    Zone / Pays / Longitude : America/Yellowknife / Canada / -114.35
        AMERICA    Zone / Pays / Longitude : America/Edmonton / Canada / -113.46666
        AMERICA    Zone / Pays / Longitude : America/Phoenix / United States of America / -112.07333
        AMERICA    Zone / Pays / Longitude : America/Hermosillo / Mexico / -110.96666
        AMERICA    Zone / Pays / Longitude : America/Swift_Current / Canada / -107.83333
        AMERICA    Zone / Pays / Longitude : America/Mazatlan / Mexico / -106.41666
        AMERICA    Zone / Pays / Longitude : America/Chihuahua / Mexico / -106.08333
        AMERICA    Zone / Pays / Longitude : America/Bahia_Banderas / Mexico / -105.25
        AMERICA    Zone / Pays / Longitude : America/Cambridge_Bay / Canada / -105.05277
        AMERICA    Zone / Pays / Longitude : America/Denver / United States of America / -104.98416
        AMERICA    Zone / Pays / Longitude : America/Regina / Canada / -104.65
        AMERICA    Zone / Pays / Longitude : America/Ojinaga / Mexico / -104.41666
        AMERICA    Zone / Pays / Longitude : America/North_Dakota/Beulah / United States of America / -101.77777
        AMERICA    Zone / Pays / Longitude : America/North_Dakota/New_Salem / United States of America / -101.41083
        AMERICA    Zone / Pays / Longitude : America/North_Dakota/Center / United States of America / -101.29916
        AMERICA    Zone / Pays / Longitude : America/Monterrey / Mexico / -100.31666
        AMERICA    Zone / Pays / Longitude : America/Mexico_City / Mexico / -99.15
        AMERICA    Zone / Pays / Longitude : America/Matamoros / Mexico / -97.5
        AMERICA    Zone / Pays / Longitude : America/Winnipeg / Canada / -97.15
        AMERICA    Zone / Pays / Longitude : America/Resolute / Canada / -94.82916
        AMERICA    Zone / Pays / Longitude : America/Rainy_River / Canada / -94.56666
        AMERICA    Zone / Pays / Longitude : America/Rankin_Inlet / Canada / -92.08305
        AMERICA    Zone / Pays / Longitude : America/Atikokan / Canada / -91.62166
        AMERICA    Zone / Pays / Longitude : America/Guatemala / Guatemala / -90.51666
        AMERICA    Zone / Pays / Longitude : America/Merida / Mexico / -89.61666
        AMERICA    Zone / Pays / Longitude : America/Thunder_Bay / Canada / -89.25
        AMERICA    Zone / Pays / Longitude : America/El_Salvador / El Salvador / -89.2
        AMERICA    Zone / Pays / Longitude : America/Nipigon / Canada / -88.26666
        AMERICA    Zone / Pays / Longitude : America/Belize / Belize / -88.2
        AMERICA    Zone / Pays / Longitude : America/Chicago / United States of America / -87.65
        AMERICA    Zone / Pays / Longitude : America/Menominee / United States of America / -87.61416
        AMERICA    Zone / Pays / Longitude : America/Indiana/Vincennes / United States of America / -87.52861
        AMERICA    Zone / Pays / Longitude : America/Indiana/Petersburg / United States of America / -87.27861
        AMERICA    Zone / Pays / Longitude : America/Tegucigalpa / Honduras / -87.21666
        AMERICA    Zone / Pays / Longitude : America/Cancun / Mexico / -86.76666
        AMERICA    Zone / Pays / Longitude : America/Indiana/Tell_City / United States of America / -86.76138
        AMERICA    Zone / Pays / Longitude : America/Indiana/Knox / United States of America / -86.625
        AMERICA    Zone / Pays / Longitude : America/Indiana/Winamac / United States of America / -86.60305
        AMERICA    Zone / Pays / Longitude : America/Indiana/Marengo / United States of America / -86.34472
        AMERICA    Zone / Pays / Longitude : America/Managua / Nicaragua / -86.28333
        AMERICA    Zone / Pays / Longitude : America/Indiana/Indianapolis / United States of America / -86.15805
        AMERICA    Zone / Pays / Longitude : America/Kentucky/Louisville / United States of America / -85.75944
        AMERICA    Zone / Pays / Longitude : America/Indiana/Vevay / United States of America / -85.06722
        AMERICA    Zone / Pays / Longitude : America/Kentucky/Monticello / United States of America / -84.84916
        AMERICA    Zone / Pays / Longitude : America/Costa_Rica / Costa Rica / -84.08333
        AMERICA    Zone / Pays / Longitude : America/Detroit / United States of America / -83.04583
        AMERICA    Zone / Pays / Longitude : America/Havana / Cuba / -82.36666
        AMERICA    Zone / Pays / Longitude : America/Cayman / Cayman Islands / -81.38333
        AMERICA    Zone / Pays / Longitude : America/Guayaquil / Ecuador / -79.83333
        AMERICA    Zone / Pays / Longitude : America/Panama / Panama / -79.53333
        AMERICA    Zone / Pays / Longitude : America/Toronto / Canada / -79.38333
        AMERICA    Zone / Pays / Longitude : America/Nassau / Bahamas / -77.34999
        AMERICA    Zone / Pays / Longitude : America/Lima / Peru / -77.05
        AMERICA    Zone / Pays / Longitude : America/Jamaica / Jamaica / -76.79333
        AMERICA    Zone / Pays / Longitude : America/Bogota / Colombia / -74.08333
        AMERICA    Zone / Pays / Longitude : America/New_York / United States of America / -74.00638
        AMERICA    Zone / Pays / Longitude : America/Port-au-Prince / Haiti / -72.33333
        AMERICA    Zone / Pays / Longitude : America/Grand_Turk / Turks and Caicos Islands / -71.13333
        AMERICA    Zone / Pays / Longitude : America/Punta_Arenas / Chile / -70.91666
        AMERICA    Zone / Pays / Longitude : America/Santiago / Chile / -70.66666
        AMERICA    Zone / Pays / Longitude : America/Aruba / Aruba / -69.96666
        AMERICA    Zone / Pays / Longitude : America/Santo_Domingo / Dominican Republic / -69.9
        AMERICA    Zone / Pays / Longitude : America/Eirunepe / Brazil / -69.86666
        AMERICA    Zone / Pays / Longitude : America/Argentina/Rio_Gallegos / Argentina / -69.21666
        AMERICA    Zone / Pays / Longitude : America/Curacao / Curaçao / -69
        AMERICA    Zone / Pays / Longitude : America/Argentina/Mendoza / Argentina / -68.81666
        AMERICA    Zone / Pays / Longitude : America/Thule / Greenland / -68.78333
        AMERICA    Zone / Pays / Longitude : America/Argentina/San_Juan / Argentina / -68.51666
        AMERICA    Zone / Pays / Longitude : America/Iqaluit / Canada / -68.46666
        AMERICA    Zone / Pays / Longitude : America/Argentina/Ushuaia / Argentina / -68.3
        AMERICA    Zone / Pays / Longitude : America/Kralendijk / Bonaire, Sint Eustatius and Saba / -68.27666
        AMERICA    Zone / Pays / Longitude : America/La_Paz / Bolivia / -68.15
        AMERICA    Zone / Pays / Longitude : America/Rio_Branco / Brazil / -67.8
        AMERICA    Zone / Pays / Longitude : America/Caracas / Venezuela (Bolivarian Republic of) / -66.93333
        AMERICA    Zone / Pays / Longitude : America/Argentina/La_Rioja / Argentina / -66.84999
        AMERICA    Zone / Pays / Longitude : America/Argentina/San_Luis / Argentina / -66.34999
        AMERICA    Zone / Pays / Longitude : America/Puerto_Rico / Puerto Rico / -66.10611
        AMERICA    Zone / Pays / Longitude : America/Argentina/Catamarca / Argentina / -65.78333
        AMERICA    Zone / Pays / Longitude : America/Pangnirtung / Canada / -65.73333
        AMERICA    Zone / Pays / Longitude : America/Argentina/Salta / Argentina / -65.41666
        AMERICA    Zone / Pays / Longitude : America/Argentina/Jujuy / Argentina / -65.3
        AMERICA    Zone / Pays / Longitude : America/Argentina/Tucuman / Argentina / -65.21666
        AMERICA    Zone / Pays / Longitude : America/St_Thomas / Virgin Islands (U.S.) / -64.93333
        AMERICA    Zone / Pays / Longitude : America/Moncton / Canada / -64.78333
        AMERICA    Zone / Pays / Longitude : America/Tortola / Virgin Islands (British) / -64.61666
        AMERICA    Zone / Pays / Longitude : America/Argentina/Cordoba / Argentina / -64.18333
        AMERICA    Zone / Pays / Longitude : America/Porto_Velho / Brazil / -63.9
        AMERICA    Zone / Pays / Longitude : America/Halifax / Canada / -63.6
        AMERICA    Zone / Pays / Longitude : America/Marigot / Saint Martin (French part) / -63.08333
        AMERICA    Zone / Pays / Longitude : America/Anguilla / Anguilla / -63.06666
        AMERICA    Zone / Pays / Longitude : America/Lower_Princes / Sint Maarten (Dutch part) / -63.04722
        AMERICA    Zone / Pays / Longitude : America/St_Barthelemy / Saint Barthélemy / -62.85
        AMERICA    Zone / Pays / Longitude : America/St_Kitts / Saint Kitts and Nevis / -62.71666
        AMERICA    Zone / Pays / Longitude : America/Montserrat / Montserrat / -62.21666
        AMERICA    Zone / Pays / Longitude : America/Antigua / Antigua and Barbuda / -61.8
        AMERICA    Zone / Pays / Longitude : America/Grenada / Grenada / -61.75
        AMERICA    Zone / Pays / Longitude : America/Guadeloupe / Guadeloupe / -61.53333
        AMERICA    Zone / Pays / Longitude : America/Port_of_Spain / Trinidad and Tobago / -61.51666
        AMERICA    Zone / Pays / Longitude : America/Dominica / Dominica / -61.4
        AMERICA    Zone / Pays / Longitude : America/St_Vincent / Saint Vincent and the Grenadines / -61.23333
        AMERICA    Zone / Pays / Longitude : America/Martinique / Martinique / -61.08333
        AMERICA    Zone / Pays / Longitude : America/St_Lucia / Saint Lucia / -61
        AMERICA    Zone / Pays / Longitude : America/Boa_Vista / Brazil / -60.66666
        AMERICA    Zone / Pays / Longitude : America/Goose_Bay / Canada / -60.41666
        AMERICA    Zone / Pays / Longitude : America/Manaus / Brazil / -60.01666
        AMERICA    Zone / Pays / Longitude : America/Glace_Bay / Canada / -59.95
        AMERICA    Zone / Pays / Longitude : America/Barbados / Barbados / -59.61666
        AMERICA    Zone / Pays / Longitude : America/Argentina/Buenos_Aires / Argentina / -58.45
        AMERICA    Zone / Pays / Longitude : America/Guyana / Guyana / -58.16666
        AMERICA    Zone / Pays / Longitude : America/Asuncion / Paraguay / -57.66666
        AMERICA    Zone / Pays / Longitude : America/Blanc-Sablon / Canada / -57.11666
        AMERICA    Zone / Pays / Longitude : America/Miquelon / Saint Pierre and Miquelon / -56.33333
        AMERICA    Zone / Pays / Longitude : America/Montevideo / Uruguay / -56.2125
        AMERICA    Zone / Pays / Longitude : America/Cuiaba / Brazil / -56.08333
        AMERICA    Zone / Pays / Longitude : America/Paramaribo / Suriname / -55.16666
        AMERICA    Zone / Pays / Longitude : America/Santarem / Brazil / -54.86666
        AMERICA    Zone / Pays / Longitude : America/Campo_Grande / Brazil / -54.61666
        AMERICA    Zone / Pays / Longitude : America/St_Johns / Canada / -52.71666
        AMERICA    Zone / Pays / Longitude : America/Cayenne / French Guiana / -52.33333
        AMERICA    Zone / Pays / Longitude : America/Nuuk / Greenland / -51.73333
        AMERICA    Zone / Pays / Longitude : America/Belem / Brazil / -48.48333
        AMERICA    Zone / Pays / Longitude : America/Araguaina / Brazil / -48.2
        AMERICA    Zone / Pays / Longitude : America/Sao_Paulo / Brazil / -46.61666
        AMERICA    Zone / Pays / Longitude : America/Bahia / Brazil / -38.51666
        AMERICA    Zone / Pays / Longitude : America/Fortaleza / Brazil / -38.5
        AMERICA    Zone / Pays / Longitude : America/Maceio / Brazil / -35.71666
        AMERICA    Zone / Pays / Longitude : America/Recife / Brazil / -34.9
        AMERICA    Zone / Pays / Longitude : America/Noronha / Brazil / -32.41666
        AMERICA    Zone / Pays / Longitude : America/Scoresbysund / Greenland / -21.96666
        ANTARCTICA    Zone / Pays / Longitude : Antarctica/Rothera / Antarctica / -68.13333
        ANTARCTICA    Zone / Pays / Longitude : Antarctica/Palmer / Antarctica / -64.09999
        ANTARCTICA    Zone / Pays / Longitude : Antarctica/Troll / Antarctica / 2.53499
        ANTARCTICA    Zone / Pays / Longitude : Antarctica/Syowa / Antarctica / 39.59
        ANTARCTICA    Zone / Pays / Longitude : Antarctica/Mawson / Antarctica / 62.88333
        ANTARCTICA    Zone / Pays / Longitude : Antarctica/Davis / Antarctica / 77.96666
        ANTARCTICA    Zone / Pays / Longitude : Antarctica/Vostok / Antarctica / 106.9
        ANTARCTICA    Zone / Pays / Longitude : Antarctica/Casey / Antarctica / 110.51666
        ANTARCTICA    Zone / Pays / Longitude : Antarctica/DumontDUrville / Antarctica / 140.01666
        ANTARCTICA    Zone / Pays / Longitude : Antarctica/Macquarie / Australia / 158.94999
        ASIA    Zone / Pays / Longitude : Asia/Nicosia / Cyprus / 33.36666
        ASIA    Zone / Pays / Longitude : Asia/Famagusta / Cyprus / 33.95
        ASIA    Zone / Pays / Longitude : Asia/Gaza / Palestine, State of / 34.46666
        ASIA    Zone / Pays / Longitude : Asia/Hebron / Palestine, State of / 35.095
        ASIA    Zone / Pays / Longitude : Asia/Jerusalem / Israel / 35.22388
        ASIA    Zone / Pays / Longitude : Asia/Beirut / Lebanon / 35.5
        ASIA    Zone / Pays / Longitude : Asia/Amman / Jordan / 35.93333
        ASIA    Zone / Pays / Longitude : Asia/Damascus / Syrian Arab Republic / 36.29999
        ASIA    Zone / Pays / Longitude : Asia/Baghdad / Iraq / 44.41666
        ASIA    Zone / Pays / Longitude : Asia/Yerevan / Armenia / 44.5
        ASIA    Zone / Pays / Longitude : Asia/Tbilisi / Georgia / 44.81666
        ASIA    Zone / Pays / Longitude : Asia/Aden / Yemen / 45.2
        ASIA    Zone / Pays / Longitude : Asia/Riyadh / Saudi Arabia / 46.71666
        ASIA    Zone / Pays / Longitude : Asia/Kuwait / Kuwait / 47.98333
        ASIA    Zone / Pays / Longitude : Asia/Baku / Azerbaijan / 49.85
        ASIA    Zone / Pays / Longitude : Asia/Aqtau / Kazakhstan / 50.26666
        ASIA    Zone / Pays / Longitude : Asia/Bahrain / Bahrain / 50.58333
        ASIA    Zone / Pays / Longitude : Asia/Oral / Kazakhstan / 51.35
        ASIA    Zone / Pays / Longitude : Asia/Tehran / Iran (Islamic Republic of) / 51.43333
        ASIA    Zone / Pays / Longitude : Asia/Qatar / Qatar / 51.53333
        ASIA    Zone / Pays / Longitude : Asia/Atyrau / Kazakhstan / 51.93333
        ASIA    Zone / Pays / Longitude : Asia/Dubai / United Arab Emirates / 55.3
        ASIA    Zone / Pays / Longitude : Asia/Aqtobe / Kazakhstan / 57.16666
        ASIA    Zone / Pays / Longitude : Asia/Ashgabat / Turkmenistan / 58.38333
        ASIA    Zone / Pays / Longitude : Asia/Muscat / Oman / 58.58333
        ASIA    Zone / Pays / Longitude : Asia/Yekaterinburg / Russian Federation / 60.6
        ASIA    Zone / Pays / Longitude : Asia/Qostanay / Kazakhstan / 63.61666
        ASIA    Zone / Pays / Longitude : Asia/Qyzylorda / Kazakhstan / 65.46666
        ASIA    Zone / Pays / Longitude : Asia/Samarkand / Uzbekistan / 66.8
        ASIA    Zone / Pays / Longitude : Asia/Karachi / Pakistan / 67.05
        ASIA    Zone / Pays / Longitude : Asia/Dushanbe / Tajikistan / 68.8
        ASIA    Zone / Pays / Longitude : Asia/Kabul / Afghanistan / 69.2
        ASIA    Zone / Pays / Longitude : Asia/Tashkent / Uzbekistan / 69.3
        ASIA    Zone / Pays / Longitude : Asia/Omsk / Russian Federation / 73.4
        ASIA    Zone / Pays / Longitude : Asia/Bishkek / Kyrgyzstan / 74.59999
        ASIA    Zone / Pays / Longitude : Asia/Almaty / Kazakhstan / 76.95
        ASIA    Zone / Pays / Longitude : Asia/Colombo / Sri Lanka / 79.84999
        ASIA    Zone / Pays / Longitude : Asia/Novosibirsk / Russian Federation / 82.91666
        ASIA    Zone / Pays / Longitude : Asia/Barnaul / Russian Federation / 83.75
        ASIA    Zone / Pays / Longitude : Asia/Tomsk / Russian Federation / 84.96666
        ASIA    Zone / Pays / Longitude : Asia/Kathmandu / Nepal / 85.31666
        ASIA    Zone / Pays / Longitude : Asia/Novokuznetsk / Russian Federation / 87.11666
        ASIA    Zone / Pays / Longitude : Asia/Urumqi / China / 87.58333
        ASIA    Zone / Pays / Longitude : Asia/Kolkata / India / 88.36666
        ASIA    Zone / Pays / Longitude : Asia/Thimphu / Bhutan / 89.65
        ASIA    Zone / Pays / Longitude : Asia/Dhaka / Bangladesh / 90.41666
        ASIA    Zone / Pays / Longitude : Asia/Hovd / Mongolia / 91.65
        ASIA    Zone / Pays / Longitude : Asia/Krasnoyarsk / Russian Federation / 92.83333
        ASIA    Zone / Pays / Longitude : Asia/Yangon / Myanmar / 96.16666
        ASIA    Zone / Pays / Longitude : Asia/Bangkok / Thailand / 100.51666
        ASIA    Zone / Pays / Longitude : Asia/Kuala_Lumpur / Malaysia / 101.7
        ASIA    Zone / Pays / Longitude : Asia/Vientiane / Lao People's Democratic Republic / 102.6
        ASIA    Zone / Pays / Longitude : Asia/Singapore / Singapore / 103.85
        ASIA    Zone / Pays / Longitude : Asia/Irkutsk / Russian Federation / 104.33333
        ASIA    Zone / Pays / Longitude : Asia/Phnom_Penh / Cambodia / 104.91666
        ASIA    Zone / Pays / Longitude : Asia/Ho_Chi_Minh / Viet Nam / 106.66666
        ASIA    Zone / Pays / Longitude : Asia/Jakarta / Indonesia / 106.8
        ASIA    Zone / Pays / Longitude : Asia/Ulaanbaatar / Mongolia / 106.88333
        ASIA    Zone / Pays / Longitude : Asia/Pontianak / Indonesia / 109.33333
        ASIA    Zone / Pays / Longitude : Asia/Kuching / Malaysia / 110.33333
        ASIA    Zone / Pays / Longitude : Asia/Chita / Russian Federation / 113.46666
        ASIA    Zone / Pays / Longitude : Asia/Macau / Macao / 113.54166
        ASIA    Zone / Pays / Longitude : Asia/Hong_Kong / Hong Kong / 114.15
        ASIA    Zone / Pays / Longitude : Asia/Choibalsan / Mongolia / 114.5
        ASIA    Zone / Pays / Longitude : Asia/Brunei / Brunei Darussalam / 114.91666
        ASIA    Zone / Pays / Longitude : Asia/Makassar / Indonesia / 119.4
        ASIA    Zone / Pays / Longitude : Asia/Manila / Philippines / 121
        ASIA    Zone / Pays / Longitude : Asia/Shanghai / China / 121.46666
        ASIA    Zone / Pays / Longitude : Asia/Taipei / Taiwan, Province of China / 121.5
        ASIA    Zone / Pays / Longitude : Asia/Dili / Timor-Leste / 125.58333
        ASIA    Zone / Pays / Longitude : Asia/Pyongyang / Korea (Democratic People's Republic of) / 125.75
        ASIA    Zone / Pays / Longitude : Asia/Seoul / Korea, Republic of / 126.96666
        ASIA    Zone / Pays / Longitude : Asia/Yakutsk / Russian Federation / 129.66666
        ASIA    Zone / Pays / Longitude : Asia/Vladivostok / Russian Federation / 131.93333
        ASIA    Zone / Pays / Longitude : Asia/Khandyga / Russian Federation / 135.55388
        ASIA    Zone / Pays / Longitude : Asia/Tokyo / Japan / 139.74472
        ASIA    Zone / Pays / Longitude : Asia/Jayapura / Indonesia / 140.69999
        ASIA    Zone / Pays / Longitude : Asia/Sakhalin / Russian Federation / 142.69999
        ASIA    Zone / Pays / Longitude : Asia/Ust-Nera / Russian Federation / 143.22666
        ASIA    Zone / Pays / Longitude : Asia/Magadan / Russian Federation / 150.8
        ASIA    Zone / Pays / Longitude : Asia/Srednekolymsk / Russian Federation / 153.71666
        ASIA    Zone / Pays / Longitude : Asia/Kamchatka / Russian Federation / 158.65
        ATLANTIC    Zone / Pays / Longitude : Atlantic/Bermuda / Bermuda / -64.76666
        ATLANTIC    Zone / Pays / Longitude : Atlantic/Stanley / Falkland Islands / -57.85
        ATLANTIC    Zone / Pays / Longitude : Atlantic/South_Georgia / South Georgia and the South Sandwich Islands / -36.53333
        ATLANTIC    Zone / Pays / Longitude : Atlantic/Azores / Portugal / -25.66666
        ATLANTIC    Zone / Pays / Longitude : Atlantic/Cape_Verde / Cabo Verde / -23.51666
        ATLANTIC    Zone / Pays / Longitude : Atlantic/Reykjavik / Iceland / -21.85
        ATLANTIC    Zone / Pays / Longitude : Atlantic/Madeira / Portugal / -16.89999
        ATLANTIC    Zone / Pays / Longitude : Atlantic/Canary / Spain / -15.4
        ATLANTIC    Zone / Pays / Longitude : Atlantic/Faroe / Faroe Islands / -6.76666
        AUSTRALIA    Zone / Pays / Longitude : Australia/Perth / Australia / 115.85
        AUSTRALIA    Zone / Pays / Longitude : Australia/Eucla / Australia / 128.86666
        AUSTRALIA    Zone / Pays / Longitude : Australia/Darwin / Australia / 130.83333
        AUSTRALIA    Zone / Pays / Longitude : Australia/Adelaide / Australia / 138.58333
        AUSTRALIA    Zone / Pays / Longitude : Australia/Broken_Hill / Australia / 141.44999
        AUSTRALIA    Zone / Pays / Longitude : Australia/Currie / Australia / 143.86666
        AUSTRALIA    Zone / Pays / Longitude : Australia/Melbourne / Australia / 144.96666
        AUSTRALIA    Zone / Pays / Longitude : Australia/Hobart / Australia / 147.31666
        AUSTRALIA    Zone / Pays / Longitude : Australia/Lindeman / Australia / 149
        AUSTRALIA    Zone / Pays / Longitude : Australia/Sydney / Australia / 151.21666
        AUSTRALIA    Zone / Pays / Longitude : Australia/Brisbane / Australia / 153.03333
        EUROPE    Zone / Pays / Longitude : Europe/Lisbon / Portugal / -9.13333
        EUROPE    Zone / Pays / Longitude : Europe/Dublin / Ireland / -6.25
        EUROPE    Zone / Pays / Longitude : Europe/Gibraltar / Gibraltar / -5.35
        EUROPE    Zone / Pays / Longitude : Europe/Isle_of_Man / Isle of Man / -4.46666
        EUROPE    Zone / Pays / Longitude : Europe/Madrid / Spain / -3.68333
        EUROPE    Zone / Pays / Longitude : Europe/Guernsey / Guernsey / -2.53611
        EUROPE    Zone / Pays / Longitude : Europe/Jersey / Jersey / -2.10666
        EUROPE    Zone / Pays / Longitude : Europe/London / United Kingdom of Great Britain and Northern Ireland / -0.12527
        EUROPE    Zone / Pays / Longitude : Europe/Andorra / Andorra / 1.51666
        EUROPE    Zone / Pays / Longitude : Europe/Paris / France / 2.33333
        EUROPE    Zone / Pays / Longitude : Europe/Brussels / Belgium / 4.33333
        EUROPE    Zone / Pays / Longitude : Europe/Amsterdam / Netherlands / 4.9
        EUROPE    Zone / Pays / Longitude : Europe/Luxembourg / Luxembourg / 6.15
        EUROPE    Zone / Pays / Longitude : Europe/Monaco / Monaco / 7.38333
        EUROPE    Zone / Pays / Longitude : Europe/Zurich / Switzerland / 8.53333
        EUROPE    Zone / Pays / Longitude : Europe/Busingen / Germany / 8.68333
        EUROPE    Zone / Pays / Longitude : Europe/Vaduz / Liechtenstein / 9.51666
        EUROPE    Zone / Pays / Longitude : Europe/Oslo / Norway / 10.75
        EUROPE    Zone / Pays / Longitude : Europe/Vatican / Holy See / 12.45305
        EUROPE    Zone / Pays / Longitude : Europe/San_Marino / San Marino / 12.46666
        EUROPE    Zone / Pays / Longitude : Europe/Rome / Italy / 12.48333
        EUROPE    Zone / Pays / Longitude : Europe/Copenhagen / Denmark / 12.58333
        EUROPE    Zone / Pays / Longitude : Europe/Berlin / Germany / 13.36666
        EUROPE    Zone / Pays / Longitude : Europe/Prague / Czechia / 14.43333
        EUROPE    Zone / Pays / Longitude : Europe/Ljubljana / Slovenia / 14.51666
        EUROPE    Zone / Pays / Longitude : Europe/Malta / Malta / 14.51666
        EUROPE    Zone / Pays / Longitude : Europe/Zagreb / Croatia / 15.96666
        EUROPE    Zone / Pays / Longitude : Europe/Vienna / Austria / 16.33333
        EUROPE    Zone / Pays / Longitude : Europe/Bratislava / Slovakia / 17.11666
        EUROPE    Zone / Pays / Longitude : Europe/Stockholm / Sweden / 18.05
        EUROPE    Zone / Pays / Longitude : Europe/Sarajevo / Bosnia and Herzegovina / 18.41666
        EUROPE    Zone / Pays / Longitude : Europe/Budapest / Hungary / 19.08333
        EUROPE    Zone / Pays / Longitude : Europe/Podgorica / Montenegro / 19.26666
        EUROPE    Zone / Pays / Longitude : Europe/Tirane / Albania / 19.83333
        EUROPE    Zone / Pays / Longitude : Europe/Mariehamn / Åland Islands / 19.95
        EUROPE    Zone / Pays / Longitude : Europe/Belgrade / Serbia / 20.5
        EUROPE    Zone / Pays / Longitude : Europe/Kaliningrad / Russian Federation / 20.5
        EUROPE    Zone / Pays / Longitude : Europe/Warsaw / Poland / 21
        EUROPE    Zone / Pays / Longitude : Europe/Skopje / North Macedonia / 21.43333
        EUROPE    Zone / Pays / Longitude : Europe/Uzhgorod / Ukraine / 22.3
        EUROPE    Zone / Pays / Longitude : Europe/Sofia / Bulgaria / 23.31666
        EUROPE    Zone / Pays / Longitude : Europe/Athens / Greece / 23.71666
        EUROPE    Zone / Pays / Longitude : Europe/Riga / Latvia / 24.1
        EUROPE    Zone / Pays / Longitude : Europe/Tallinn / Estonia / 24.75
        EUROPE    Zone / Pays / Longitude : Europe/Helsinki / Finland / 24.96666
        EUROPE    Zone / Pays / Longitude : Europe/Vilnius / Lithuania / 25.31666
        EUROPE    Zone / Pays / Longitude : Europe/Bucharest / Romania / 26.1
        EUROPE    Zone / Pays / Longitude : Europe/Minsk / Belarus / 27.56666
        EUROPE    Zone / Pays / Longitude : Europe/Chisinau / Moldova, Republic of / 28.83333
        EUROPE    Zone / Pays / Longitude : Europe/Istanbul / Turkey / 28.96666
        EUROPE    Zone / Pays / Longitude : Europe/Kiev / Ukraine / 30.51666
        EUROPE    Zone / Pays / Longitude : Europe/Simferopol / Ukraine / 34.1
        EUROPE    Zone / Pays / Longitude : Europe/Zaporozhye / Ukraine / 35.16666
        EUROPE    Zone / Pays / Longitude : Europe/Moscow / Russian Federation / 37.61777
        EUROPE    Zone / Pays / Longitude : Europe/Volgograd / Russian Federation / 44.41666
        EUROPE    Zone / Pays / Longitude : Europe/Saratov / Russian Federation / 46.03333
        EUROPE    Zone / Pays / Longitude : Europe/Astrakhan / Russian Federation / 48.05
        EUROPE    Zone / Pays / Longitude : Europe/Ulyanovsk / Russian Federation / 48.4
        EUROPE    Zone / Pays / Longitude : Europe/Kirov / Russian Federation / 49.65
        INDIAN    Zone / Pays / Longitude : Indian/Comoro / Comoros / 43.26666
        INDIAN    Zone / Pays / Longitude : Indian/Mayotte / Mayotte / 45.23333
        INDIAN    Zone / Pays / Longitude : Indian/Antananarivo / Madagascar / 47.51666
        INDIAN    Zone / Pays / Longitude : Indian/Mahe / Seychelles / 55.46666
        INDIAN    Zone / Pays / Longitude : Indian/Reunion / Réunion / 55.46666
        INDIAN    Zone / Pays / Longitude : Indian/Mauritius / Mauritius / 57.5
        INDIAN    Zone / Pays / Longitude : Indian/Kerguelen / French Southern Territories / 70.2175
        INDIAN    Zone / Pays / Longitude : Indian/Chagos / British Indian Ocean Territory / 72.41666
        INDIAN    Zone / Pays / Longitude : Indian/Maldives / Maldives / 73.5
        INDIAN    Zone / Pays / Longitude : Indian/Cocos / Cocos / 96.91666
        PACIFIC    Zone / Pays / Longitude : Pacific/Midway / United States Minor Outlying Islands / -177.36666
        PACIFIC    Zone / Pays / Longitude : Pacific/Chatham / New Zealand / -176.55
        PACIFIC    Zone / Pays / Longitude : Pacific/Wallis / Wallis and Futuna / -176.16666
        PACIFIC    Zone / Pays / Longitude : Pacific/Tongatapu / Tonga / -175.16666
        PACIFIC    Zone / Pays / Longitude : Pacific/Apia / Samoa / -171.73333
        PACIFIC    Zone / Pays / Longitude : Pacific/Fakaofo / Tokelau / -171.23333
        PACIFIC    Zone / Pays / Longitude : Pacific/Enderbury / Kiribati / -171.08333
        PACIFIC    Zone / Pays / Longitude : Pacific/Pago_Pago / American Samoa / -170.7
        PACIFIC    Zone / Pays / Longitude : Pacific/Niue / Niue / -169.91666
        PACIFIC    Zone / Pays / Longitude : Pacific/Rarotonga / Cook Islands / -159.76666
        PACIFIC    Zone / Pays / Longitude : Pacific/Honolulu / United States of America / -157.85833
        PACIFIC    Zone / Pays / Longitude : Pacific/Kiritimati / Kiribati / -157.33333
        PACIFIC    Zone / Pays / Longitude : Pacific/Tahiti / French Polynesia / -149.56666
        PACIFIC    Zone / Pays / Longitude : Pacific/Marquesas / French Polynesia / -139.5
        PACIFIC    Zone / Pays / Longitude : Pacific/Gambier / French Polynesia / -134.94999
        PACIFIC    Zone / Pays / Longitude : Pacific/Pitcairn / Pitcairn / -130.08333
        PACIFIC    Zone / Pays / Longitude : Pacific/Easter / Chile / -109.43333
        PACIFIC    Zone / Pays / Longitude : Pacific/Galapagos / Ecuador / -89.6
        PACIFIC    Zone / Pays / Longitude : Pacific/Palau / Palau / 134.48333
        PACIFIC    Zone / Pays / Longitude : Pacific/Guam / Guam / 144.75
        PACIFIC    Zone / Pays / Longitude : Pacific/Saipan / Northern Mariana Islands / 145.75
        PACIFIC    Zone / Pays / Longitude : Pacific/Port_Moresby / Papua New Guinea / 147.16666
        PACIFIC    Zone / Pays / Longitude : Pacific/Chuuk / Micronesia / 151.78333
        PACIFIC    Zone / Pays / Longitude : Pacific/Bougainville / Papua New Guinea / 155.56666
        PACIFIC    Zone / Pays / Longitude : Pacific/Pohnpei / Micronesia / 158.21666
        PACIFIC    Zone / Pays / Longitude : Pacific/Guadalcanal / Solomon Islands / 160.19999
        PACIFIC    Zone / Pays / Longitude : Pacific/Kosrae / Micronesia / 162.98333
        PACIFIC    Zone / Pays / Longitude : Pacific/Noumea / New Caledonia / 166.44999
        PACIFIC    Zone / Pays / Longitude : Pacific/Wake / United States Minor Outlying Islands / 166.61666
        PACIFIC    Zone / Pays / Longitude : Pacific/Nauru / Nauru / 166.91666
        PACIFIC    Zone / Pays / Longitude : Pacific/Kwajalein / Marshall Islands / 167.33333
        PACIFIC    Zone / Pays / Longitude : Pacific/Norfolk / Norfolk Island / 167.96666
        PACIFIC    Zone / Pays / Longitude : Pacific/Efate / Vanuatu / 168.41666
        PACIFIC    Zone / Pays / Longitude : Pacific/Majuro / Marshall Islands / 171.2
        PACIFIC    Zone / Pays / Longitude : Pacific/Tarawa / Kiribati / 173
        PACIFIC    Zone / Pays / Longitude : Pacific/Auckland / New Zealand / 174.76666
        PACIFIC    Zone / Pays / Longitude : Pacific/Fiji / Fiji / 178.41666
    
    
     
  9. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 522
    J'aime reçus:
    28
    Bonjour KOogar

    J'ai fait une fonction de filtrage avec la longitude ( théorique ) du browser, et l'array des zoneName à filtrer.

    Voici le code :

    PHP:

    <?php
    /**
     * Trier
     * par array_zones
     * en ordre croissant
     * des longitudes,
     * mimimum et maximum
     * pour chaques zoneName.
     *
     * Il faut donc trier
     * les zoneName
     * par ordre croissant
     * des longitudes
     * dans chaque
     * array_zone.
     *
     * par [array_zone][indice_tri]
     * pour chaque indice_tri
     * son zoneName et
     * ses longitudes
     * min et max.
     *
     **/
    define('MIN'0);
    define('MAX'1);
    define('ZONE'0);
    define('COUNTRY'1);
    define('LONG'2);
    function 
    ALL_offsets()
    {
            
    $array_indice        = array();        // By zone
            
    $array_sorted_all    = array();        // [MIN] => minimum, [MAX] => maximum - [ZONE] => zoneName, [COUNTRY] => $array_country, [LONG] => $longitude.
            
    $array_zones = array(
                    
    DateTimeZone::AFRICA,
                    
    DateTimeZone::AMERICA,
                    
    DateTimeZone::ANTARCTICA,
                    
    DateTimeZone::ARCTIC,
                    
    DateTimeZone::ASIA,
                    
    DateTimeZone::ATLANTIC,
                    
    DateTimeZone::AUSTRALIA,
                    
    DateTimeZone::EUROPE,
                    
    DateTimeZone::INDIAN,
                    
    DateTimeZone::PACIFIC);
            
    /**
            * Parcours
            * de tous les
            * offsets
            * de tous les
            * fuseaux horaires.
            **/
            
    foreach($array_zones as $value)
            {
                    unset(
    $timeZones);
                    
    $timeZones DateTimeZone::listIdentifiers($value);
                    foreach ( 
    $timeZones as $zoneName )
                    {
                            unset(
    $dateTimeZone);
                            
    $dateTimeZone = new DateTimeZone($zoneName);
                            unset(
    $locations);
                            
    $locations $dateTimeZone->getLocation();
                            unset(
    $dateTime_now);
                            
    $dateTime_now = new DateTime("now"$dateTimeZone);
                            unset(
    $timeOffset);
                            
    $timeOffset $dateTime_now->getOffset();
                            if(isset(
    $locations['longitude']))
                            {
                                    unset(
    $longitude);
                                    
    $longitude $locations['longitude'];
                                    unset(
    $country_code);
                                    if(isset(
    $locations['country_code']))
                                    {
                                            
    $country_code $locations['country_code'];
                                    }
                                    if(isset(
    $array_indice[$value][MAX]))
                                    {
                                            for(
    $i 0$i <= $array_indice[$value][MAX]; $i++)
                                            {
                                                    if(
    $array_sorted_all[$value][MAX][LONG][$i] > $longitude)
                                                    {
                                                            break;
                                                    }
                                            }
                                            if(
    $i <= $array_indice[$value][MAX])
                                            {
                                                    for(
    $j $array_indice[$value][MAX]; $j >= $i$j--)
                                                    {
                                                            
    $array_sorted_all[$value][MAX][ZONE][$j 1] = $array_sorted_all[$value][MAX][ZONE][$j];
                                                            
    $array_sorted_all[$value][MAX][COUNTRY][$j 1] = $array_sorted_all[$value][MAX][COUNTRY][$j];
                                                            
    $array_sorted_all[$value][MAX][LONG][$j 1] = $array_sorted_all[$value][MAX][LONG][$j];
                                                    }
                                                    
    $array_sorted_all[$value][MAX][ZONE][$i] = $zoneName;
                                                    
    $array_sorted_all[$value][MAX][LONG][$i] = $longitude;
                                                    if(isset(
    $country_code))
                                                    {
                                                            
    $array_sorted_all[$value][MAX][COUNTRY][$i] = $country_code;
                                                    }
                                            }
                                            else
                                            {
                                                    
    $array_sorted_all[$value][MAX][ZONE][$i] = $zoneName;
                                                    
    $array_sorted_all[$value][MAX][LONG][$i] = $longitude;
                                                    if(isset(
    $country_code))
                                                    {
                                                            
    $array_sorted_all[$value][MAX][COUNTRY][$i] = $country_code;
                                                    }
                                            }
                                            
    $array_indice[$value][MAX] = $array_indice[$value][MAX] + 1;
                                    }
                                    else
                                    {
                                            
    $array_indice[$value][MAX] = 0;
                                            
    $array_sorted_all[$value][MAX][ZONE][0] = $zoneName;
                                            
    $array_sorted_all[$value][MAX][LONG][0] = $longitude;
                                            if(isset(
    $country_code))
                                            {
                                                    
    $array_sorted_all[$value][MAX][COUNTRY][0] = $country_code;
                                            }
                                    }
                                    if(isset(
    $array_indice[$value][MIN]))
                                    {
                                            for(
    $i 0$i <= $array_indice[$value][MIN]; $i++)
                                            {
                                                    if(
    $array_sorted_all[$value][MIN][LONG][$i] > $longitude)
                                                    {
                                                            break;
                                                    }
                                            }
                                            if(
    $i <= $array_indice[$value][MIN])
                                            {
                                                    for(
    $j $array_indice[$value][MIN]; $j >= $i$j--)
                                                    {
                                                            
    $array_sorted_all[$value][MIN][ZONE][$j 1] = $array_sorted_all[$value][MIN][ZONE][$j];
                                                            
    $array_sorted_all[$value][MIN][COUNTRY][$j 1] = $array_sorted_all[$value][MIN][COUNTRY][$j];
                                                            
    $array_sorted_all[$value][MIN][LONG][$j 1] = $array_sorted_all[$value][MIN][LONG][$j];
                                                    }
                                                    
    $array_sorted_all[$value][MIN][ZONE][$i] = $zoneName;
                                                    
    $array_sorted_all[$value][MIN][LONG][$i] = $longitude;
                                                    if(isset(
    $country_code))
                                                    {
                                                            
    $array_sorted_all[$value][MIN][COUNTRY][$i] = $country_code;
                                                    }
                                            }
                                            else
                                            {
                                                    
    $array_sorted_all[$value][MIN][ZONE][$i] = $zoneName;
                                                    
    $array_sorted_all[$value][MIN][LONG][$i] = $longitude;
                                                    if(isset(
    $country_code))
                                                    {
                                                            
    $array_sorted_all[$value][MIN][COUNTRY][$i] = $country_code;
                                                    }
                                            }
                                            
    $array_indice[$value][MIN] = $array_indice[$value][MIN] + 1;
                                    }
                                    else
                                    {
                                            
    $array_indice[$value][MIN] = 0;
                                            
    $array_sorted_all[$value][MIN][ZONE][0] = $zoneName;
                                            
    $array_sorted_all[$value][MIN][LONG][0] = $longitude;
                                            if(isset(
    $country_code))
                                            {
                                                    
    $array_sorted_all[$value][MIN][COUNTRY][0] = $country_code;
                                            }
                                    }
                            }
                            else
                            {
                                    foreach(
    $locations as $location)
                                    {
                                            if(isset(
    $location['longitude']))
                                            {
                                                    unset(
    $longitude);
                                                    
    $longitude $location['longitude'];
                                                    unset(
    $country_code);
                                                    if(isset(
    $location['country_code']))
                                                    {
                                                            
    $country_code $location['country_code'];
                                                    }
                                                    if(isset(
    $array_indice[$value][MAX]))
                                                    {
                                                            for(
    $i 0$i <= $array_indice[$value][MAX]; $i++)
                                                            {
                                                                    if(
    $array_sorted_all[$value][MAX][LONG][$i] > $longitude)
                                                                    {
                                                                            break;
                                                                    }
                                                            }
                                                            if(
    $i <= $array_indice[$value][MAX])
                                                            {
                                                                    for(
    $j $array_indice[$value][MAX]; $j >= $i$j--)
                                                                    {
                                                                            
    $array_sorted_all[$value][MAX][ZONE][$j 1] = $array_sorted_all[$value][MAX][ZONE][$j];
                                                                            
    $array_sorted_all[$value][MAX][COUNTRY][$j 1] = $array_sorted_all[$value][MAX][COUNTRY][$j];
                                                                            
    $array_sorted_all[$value][MAX][LONG][$j 1] = $array_sorted_all[$value][MAX][LONG][$j];
                                                                    }
                                                                    
    $array_sorted_all[$value][MAX][ZONE][$i] = $zoneName;
                                                                    
    $array_sorted_all[$value][MAX][LONG][$i] = $longitude;
                                                                    if(isset(
    $country_code))
                                                                    {
                                                                            
    $array_sorted_all[$value][MAX][COUNTRY][$i] = $country_code;
                                                                    }
                                                            }
                                                            else
                                                            {
                                                                    
    $array_sorted_all[$value][MAX][ZONE][$i] = $zoneName;
                                                                    
    $array_sorted_all[$value][MAX][LONG][$i] = $longitude;
                                                                    if(isset(
    $country_code))
                                                                    {
                                                                            
    $array_sorted_all[$value][MAX][COUNTRY][$i] = $country_code;
                                                                    }
                                                            }
                                                            
    $array_indice[$value][MAX] = $array_indice[$value][MAX] + 1;
                                                    }
                                                    else
                                                    {
                                                            
    $array_indice[$value][MAX] = 0;
                                                            
    $array_sorted_all[$value][MAX][ZONE][0] = $zoneName;
                                                            
    $array_sorted_all[$value][MAX][LONG][0] = $longitude;
                                                            if(isset(
    $country_code))
                                                            {
                                                                    
    $array_sorted_all[$value][MAX][COUNTRY][0] = $country_code;
                                                            }
                                                    }
                                                    if(isset(
    $array_indice[$value][MIN]))
                                                    {
                                                            for(
    $i 0$i <= $array_indice[$value][MIN]; $i++)
                                                            {
                                                                    if(
    $array_sorted_all[$value][MIN][LONG][$i] > $longitude)
                                                                    {
                                                                            break;
                                                                    }
                                                            }
                                                            if(
    $i <= $array_indice[$value][MIN])
                                                            {
                                                                    for(
    $j $array_indice[$value][MIN]; $j >= $i$j--)
                                                                    {
                                                                            
    $array_sorted_all[$value][MIN][ZONE][$j 1] = $array_sorted_all[$value][MIN][ZONE][$j];
                                                                            
    $array_sorted_all[$value][MIN][COUNTRY][$j 1] = $array_sorted_all[$value][MIN][COUNTRY][$j];
                                                                            
    $array_sorted_all[$value][MIN][LONG][$j 1] = $array_sorted_all[$value][MIN][LONG][$j];
                                                                    }
                                                                    
    $array_sorted_all[$value][MIN][ZONE][$i] = $zoneName;
                                                                    
    $array_sorted_all[$value][MIN][LONG][$i] = $longitude;
                                                                    if(isset(
    $country_code))
                                                                    {
                                                                            
    $array_sorted_all[$value][MIN][COUNTRY][$i] = $country_code;
                                                                    }
                                                            }
                                                            else
                                                            {
                                                                    
    $array_sorted_all[$value][MIN][ZONE][$i] = $zoneName;
                                                                    
    $array_sorted_all[$value][MIN][LONG][$i] = $longitude;
                                                                    if(isset(
    $country_code))
                                                                    {
                                                                            
    $array_sorted_all[$value][MIN][COUNTRY][$i] = $country_code;
                                                                    }
                                                            }
                                                            
    $array_indice[$value][MIN] = $array_indice[$value][MIN] + 1;
                                                    }
                                                    else
                                                    {
                                                            
    $array_indice[$value][MIN] = 0;
                                                            
    $array_sorted_all[$value][MIN][ZONE][0] = $zoneName;
                                                            
    $array_sorted_all[$value][MIN][LONG][0] = $longitude;
                                                            if(isset(
    $country_code))
                                                            {
                                                                    
    $array_sorted_all[$value][MIN][COUNTRY][0] = $country_code;
                                                            }
                                                    }
                                            }
                                    }
                            }
                    }
            }
            return array(
    $array_indice$array_sorted_all);
    }
    /**
     * false => bloqué
     * true  => pas bloqué.
     *
     * Paramètre :
     * $array_zone
     * à filtrer.
     **/
    function bloque_zone_fuseau($longitude_browser, array $array_zones)
    {
            
    $array_zones_names = array(
                    
    DateTimeZone::AFRICA        => 'DateTimeZone::AFRICA',
                    
    DateTimeZone::AMERICA        => 'DateTimeZone::AMERICA',
                    
    DateTimeZone::ANTARCTICA    => 'DateTimeZone::ANTARCTICA',
                    
    DateTimeZone::ARCTIC        => 'DateTimeZone::ARCTIC',
                    
    DateTimeZone::ASIA            => 'DateTimeZone::ASIA',
                    
    DateTimeZone::ATLANTIC        => 'DateTimeZone::ATLANTIC',
                    
    DateTimeZone::AUSTRALIA        => 'DateTimeZone::AUSTRALIA',
                    
    DateTimeZone::EUROPE        => 'DateTimeZone::EUROPE',
                    
    DateTimeZone::INDIAN        => 'DateTimeZone::INDIAN',
                    
    DateTimeZone::PACIFIC        => 'DateTimeZone::PACIFIC');
            
    $array_pays = array(
                    
    'AD' => 'Andorra'
                    
    'AE' => 'United Arab Emirates'
                    
    'AF' => 'Afghanistan'
                    
    'AG' => 'Antigua and Barbuda'
                    
    'AI' => 'Anguilla'
                    
    'AL' => 'Albania'
                    
    'AM' => 'Armenia'
                    
    'AO' => 'Angola'
                    
    'AQ' => 'Antarctica'
                    
    'AR' => 'Argentina'
                    
    'AS' => 'American Samoa'
                    
    'AT' => 'Austria'
                    
    'AU' => 'Australia'
                    
    'AW' => 'Aruba'
                    
    'AX' => 'Åland Islands'
                    
    'AZ' => 'Azerbaijan'
                    
    'BA' => 'Bosnia and Herzegovina'
                    
    'BB' => 'Barbados'
                    
    'BD' => 'Bangladesh'
                    
    'BE' => 'Belgium'
                    
    'BF' => 'Burkina Faso'
                    
    'BG' => 'Bulgaria'
                    
    'BH' => 'Bahrain'
                    
    'BI' => 'Burundi'
                    
    'BJ' => 'Benin'
                    
    'BL' => 'Saint Barthélemy'
                    
    'BM' => 'Bermuda'
                    
    'BN' => 'Brunei Darussalam'
                    
    'BO' => 'Bolivia'
                    
    'BQ' => 'Bonaire, Sint Eustatius and Saba'
                    
    'BQ previously represented British Antarctic Territory'
                    
    'BR' => 'Brazil'
                    
    'BS' => 'Bahamas'
                    
    'BT' => 'Bhutan'
                    
    'BV' => 'Bouvet'
                    
    'BW' => 'Botswana'
                    
    'BY' => 'Belarus'
                    
    'BZ' => 'Belize'
                    
    'CA' => 'Canada'
                    
    'CC' => 'Cocos'
                    
    'CD' => 'Congo, Democratic Republic of the'
                    
    'CF' => 'Central African Republic'
                    
    'CG' => 'Congo'
                    
    'CH' => 'Switzerland'
                    
    'CI' => 'Côte di\'Ivoire'
                    
    'CK' => 'Cook Islands'
                    
    'CL' => 'Chile'
                    
    'CM' => 'Cameroon'
                    
    'CN' => 'China'
                    
    'CO' => 'Colombia'
                    
    'CR' => 'Costa Rica'
                    
    'CU' => 'Cuba'
                    
    'CV' => 'Cabo Verde'
                    
    'CW' => 'Curaçao'
                    
    'CX' => 'Christmas Island'
                    
    'CY' => 'Cyprus'
                    
    'CZ' => 'Czechia'
                    
    'DE' => 'Germany'
                    
    'DJ' => 'Djibouti'
                    
    'DK' => 'Denmark'
                    
    'DM' => 'Dominica'
                    
    'DO' => 'Dominican Republic'
                    
    'DZ' => 'Algeria'
                    
    'EC' => 'Ecuador'
                    
    'EE' => 'Estonia'
                    
    'EG' => 'Egypt'
                    
    'EH' => 'Western Sahara'
                    
    'ER' => 'Eritrea'
                    
    'ES' => 'Spain'
                    
    'ET' => 'Ethiopia'
                    
    'FI' => 'Finland'
                    
    'FJ' => 'Fiji'
                    
    'FK' => 'Falkland Islands'
                    
    'FM' => 'Micronesia'
                    
    'FO' => 'Faroe Islands'
                    
    'FR' => 'France'
                    
    'GA' => 'Gabon'
                    
    'GB' => 'United Kingdom of Great Britain and Northern Ireland'
                    
    'GD' => 'Grenada'
                    
    'GE' => 'Georgia'
                    
    'GF' => 'French Guiana'
                    
    'GG' => 'Guernsey'
                    
    'GH' => 'Ghana'
                    
    'GI' => 'Gibraltar'
                    
    'GL' => 'Greenland'
                    
    'GM' => 'Gambia'
                    
    'GN' => 'Guinea'
                    
    'GP' => 'Guadeloupe'
                    
    'GQ' => 'Equatorial Guinea'
                    
    'GR' => 'Greece'
                    
    'GS' => 'South Georgia and the South Sandwich Islands'
                    
    'GT' => 'Guatemala'
                    
    'GU' => 'Guam'
                    
    'GW' => 'Guinea-Bissau'
                    
    'GY' => 'Guyana'
                    
    'HK' => 'Hong Kong'
                    
    'HM' => 'Heard Island and McDonald Islands'
                    
    'HN' => 'Honduras'
                    
    'HR' => 'Croatia'
                    
    'HT' => 'Haiti'
                    
    'HU' => 'Hungary'
                    
    'ID' => 'Indonesia'
                    
    'IE' => 'Ireland'
                    
    'IL' => 'Israel'
                    
    'IM' => 'Isle of Man'
                    
    'IN' => 'India'
                    
    'IO' => 'British Indian Ocean Territory'
                    
    'IQ' => 'Iraq'
                    
    'IR' => 'Iran (Islamic Republic of)'
                    
    'IS' => 'Iceland'
                    
    'IT' => 'Italy'
                    
    'JE' => 'Jersey'
                    
    'JM' => 'Jamaica'
                    
    'JO' => 'Jordan'
                    
    'JP' => 'Japan'
                    
    'KE' => 'Kenya'
                    
    'KG' => 'Kyrgyzstan'
                    
    'KH' => 'Cambodia'
                    
    'KI' => 'Kiribati'
                    
    'KM' => 'Comoros'
                    
    'KN' => 'Saint Kitts and Nevis'
                    
    'KP' => 'Korea (Democratic People\'s Republic of)'
                    
    'KR' => 'Korea, Republic of'
                    
    'KW' => 'Kuwait'
                    
    'KY' => 'Cayman Islands'
                    
    'KZ' => 'Kazakhstan'
                    
    'LA' => 'Lao People\'s Democratic Republic'
                    
    'LB' => 'Lebanon'
                    
    'LC' => 'Saint Lucia'
                    
    'LI' => 'Liechtenstein'
                    
    'LK' => 'Sri Lanka'
                    
    'LR' => 'Liberia'
                    
    'LS' => 'Lesotho'
                    
    'LT' => 'Lithuania'
                    
    'LU' => 'Luxembourg'
                    
    'LV' => 'Latvia'
                    
    'LY' => 'Libya'
                    
    'MA' => 'Morocco'
                    
    'MC' => 'Monaco'
                    
    'MD' => 'Moldova, Republic of'
                    
    'ME' => 'Montenegro'
                    
    'MF' => 'Saint Martin (French part)'
                    
    'MG' => 'Madagascar'
                    
    'MH' => 'Marshall Islands'
                    
    'MK' => 'North Macedonia'
                    
    'ML' => 'Mali'
                    
    'MM' => 'Myanmar'
                    
    'MN' => 'Mongolia'
                    
    'MO' => 'Macao'
                    
    'MP' => 'Northern Mariana Islands'
                    
    'MQ' => 'Martinique'
                    
    'MR' => 'Mauritania'
                    
    'MS' => 'Montserrat'
                    
    'MT' => 'Malta'
                    
    'MU' => 'Mauritius'
                    
    'MV' => 'Maldives'
                    
    'MW' => 'Malawi'
                    
    'MX' => 'Mexico'
                    
    'MY' => 'Malaysia'
                    
    'MZ' => 'Mozambique'
                    
    'NA' => 'Namibia'
                    
    'NC' => 'New Caledonia'
                    
    'NE' => 'Niger'
                    
    'NF' => 'Norfolk Island'
                    
    'NG' => 'Nigeria'
                    
    'NI' => 'Nicaragua'
                    
    'NL' => 'Netherlands'
                    
    'NO' => 'Norway'
                    
    'NP' => 'Nepal'
                    
    'NR' => 'Nauru'
                    
    'NU' => 'Niue'
                    
    'NZ' => 'New Zealand'
                    
    'OM' => 'Oman'
                    
    'PA' => 'Panama'
                    
    'PE' => 'Peru'
                    
    'PF' => 'French Polynesia'
                    
    'PG' => 'Papua New Guinea'
                    
    'PH' => 'Philippines'
                    
    'PK' => 'Pakistan'
                    
    'PL' => 'Poland'
                    
    'PM' => 'Saint Pierre and Miquelon'
                    
    'PN' => 'Pitcairn'
                    
    'PR' => 'Puerto Rico'
                    
    'PS' => 'Palestine, State of'
                    
    'PT' => 'Portugal'
                    
    'PW' => 'Palau'
                    
    'PY' => 'Paraguay'
                    
    'QA' => 'Qatar'
                    
    'RE' => 'Réunion'
                    
    'RO' => 'Romania'
                    
    'RS' => 'Serbia'
                    
    'RU' => 'Russian Federation'
                    
    'RW' => 'Rwanda'
                    
    'SA' => 'Saudi Arabia'
                    
    'SB' => 'Solomon Islands'
                    
    'SC' => 'Seychelles'
                    
    'SD' => 'Sudan'
                    
    'SE' => 'Sweden'
                    
    'SG' => 'Singapore'
                    
    'SH' => 'Saint Helena, Ascension and Tristan da Cunha'
                    
    'SI' => 'Slovenia'
                    
    'SJ' => 'Svalbard and Jan Mayen'
                    
    'SK' => 'Slovakia'
                    
    'SL' => 'Sierra Leone'
                    
    'SM' => 'San Marino'
                    
    'SN' => 'Senegal'
                    
    'SO' => 'Somalia'
                    
    'SR' => 'Suriname'
                    
    'SS' => 'South Sudan'
                    
    'ST' => 'Sao Tome and Principe'
                    
    'SV' => 'El Salvador'
                    
    'SX' => 'Sint Maarten (Dutch part)'
                    
    'SY' => 'Syrian Arab Republic'
                    
    'SZ' => 'Eswatini'
                    
    'TC' => 'Turks and Caicos Islands'
                    
    'TD' => 'Chad'
                    
    'TF' => 'French Southern Territories'
                    
    'TG' => 'Togo'
                    
    'TH' => 'Thailand'
                    
    'TJ' => 'Tajikistan'
                    
    'TK' => 'Tokelau'
                    
    'TL' => 'Timor-Leste'
                    
    'TM' => 'Turkmenistan'
                    
    'TN' => 'Tunisia'
                    
    'TO' => 'Tonga'
                    
    'TR' => 'Turkey'
                    
    'TT' => 'Trinidad and Tobago'
                    
    'TV' => 'Tuvalu'
                    
    'TW' => 'Taiwan, Province of China'
                    
    'TZ' => 'Tanzania, United Republic of'
                    
    'UA' => 'Ukraine'
                    
    'UG' => 'Uganda'
                    
    'UM' => 'United States Minor Outlying Islands'
                    
    'US' => 'United States of America'
                    
    'UY' => 'Uruguay'
                    
    'UZ' => 'Uzbekistan'
                    
    'VA' => 'Holy See'
                    
    'VC' => 'Saint Vincent and the Grenadines'
                    
    'VE' => 'Venezuela (Bolivarian Republic of)'
                    
    'VG' => 'Virgin Islands (British)'
                    
    'VI' => 'Virgin Islands (U.S.)'
                    
    'VN' => 'Viet Nam'
                    
    'VU' => 'Vanuatu'
                    
    'WF' => 'Wallis and Futuna'
                    
    'WS' => 'Samoa'
                    
    'YE' => 'Yemen'
                    
    'YT' => 'Mayotte'
                    
    'ZA' => 'South Africa'
                    
    'ZM' => 'Zambia'
                    
    'ZW' => 'Zimbabwe');
            
    $array_result = array();
            
    $array_result ALL_offsets();
            foreach(
    $array_zones_names as $key => $value)
            {
                    unset(
    $indice_min);
                    unset(
    $indice_max);
                    
    $indice_min $array_result[0][$key][MIN];
                    
    $indice_max $array_result[0][$key][MAX];
                    unset(
    $indice);
                    
    $indice min($indice_min$indice_max);
                    for(
    $i 0$i $indice$i++)
                    {
                            if(
    $i < ($indice 1))
                            {
                                    unset(
    $code_country_min);
                                    unset(
    $code_country_max);
                                    
    $code_country_min = (isset($array_result[1][$key][MIN][COUNTRY][$i])) ? $array_result[1][$key][MIN][COUNTRY][$i] : $array_result[1][$key][MAX][COUNTRY][$i]; 
                                    
    $code_country_max = (isset($array_result[1][$key][MAX][COUNTRY][$i])) ? $array_result[1][$key][MAX][COUNTRY][$i] : $array_result[1][$key][MIN][COUNTRY][$i]; 
                                    unset(
    $code_country_min_after);
                                    unset(
    $code_country_max_after);
                                    
    $code_country_min_after = (isset($array_result[1][$key][MIN][COUNTRY][$i 1])) ? $array_result[1][$key][MIN][COUNTRY][$i 1] : $array_result[1][$key][MAX][COUNTRY][$i 1]; 
                                    
    $code_country_max_after = (isset($array_result[1][$key][MAX][COUNTRY][$i 1])) ? $array_result[1][$key][MAX][COUNTRY][$i +1] : $array_result[1][$key][MIN][COUNTRY][$i 1]; 
                                    unset(
    $zone_min);
                                    unset(
    $zone_max);
                                    
    $zone_min = (!empty($array_result[1][$key][MIN][ZONE][$i])) ? $array_result[1][$key][MIN][ZONE][$i] : $array_result[1][$key][MAX][ZONE][$i];
                                    
    $zone_max = (!empty($array_result[1][$key][MAX][ZONE][$i])) ? $array_result[1][$key][MAX][ZONE][$i] : $array_result[1][$key][MIN][ZONE][$i];
                                    unset(
    $zone_min_after);
                                    unset(
    $zone_max_after);
                                    
    $zone_min_after = (!empty($array_result[1][$key][MIN][ZONE][$i 1])) ? $array_result[1][$key][MIN][ZONE][$i 1] : $array_result[1][$key][MAX][ZONE][$i 1];
                                    
    $zone_max_after = (!empty($array_result[1][$key][MAX][ZONE][$i 1])) ? $array_result[1][$key][MAX][ZONE][$i 1] : $array_result[1][$key][MIN][ZONE][$i 1];
                                    unset(
    $long_min);
                                    unset(
    $long_max);
                                    
    $long_min = ($array_result[1][$key][MIN][LONG][$i] != 5000000.0) ? $array_result[1][$key][MIN][LONG][$i] : 0;
                                    
    $long_max = ($array_result[1][$key][MAX][LONG][$i] != 5000000.0) ? $array_result[1][$key][MAX][LONG][$i] : 0;
                                    unset(
    $long_min_after);
                                    unset(
    $long_max_after);
                                    
    $long_min_after = ($array_result[1][$key][MIN][LONG][$i 1] != 5000000.0) ? $array_result[1][$key][MIN][LONG][$i 1] : 0;
                                    
    $long_max_after = ($array_result[1][$key][MAX][LONG][$i 1] != 5000000.0) ? $array_result[1][$key][MAX][LONG][$i 1] : 0;
                                    unset(
    $continent);
                                    
    $continent preg_replace("{^DateTimeZone::}"""$value);
                                    unset(
    $code_country);
                                    unset(
    $code_country_after);
                                    unset(
    $zone);
                                    unset(
    $zone_after);
                                    unset(
    $long);
                                    unset(
    $long_after);
                                    if((
    $code_country_min == $code_country_max) &&
                                            (
    $code_country_min_after == $code_country_max_after) &&
                                            (
    $zone_min == $zone_max) &&
                                            (
    $zone_min_after == $zone_max_after) &&
                                            (
    $long_min == $long_max)&&
                                            (
    $long_min_after == $long_max_after))
                                    {
                                            
    $code_country $code_country_min;
                                            
    $code_country_after $code_country_min_after;
                                            
    $zone $zone_min;
                                            
    $zone_after $zone_min_after;
                                            
    $long $long_min;
                                            
    $long_after $long_min_after;
                                            if((
    $longitude_browser >= $long)&&
                                                    (
    $longitude_browser <= $long_after)&&
                                                    ((
    in_array($zone$array_zones))||
                                                    (
    in_array($zone_after$array_zones))))
                                            {
                                                    echo 
    "<br />\t" 'Longitude à filtrer : ';
                                                    echo 
    $longitude_browser "<br /><br />\n";
                                                    echo 
    "\t" $continent;
                                                    echo 
    "\t" 'Pays / Longitude / Zone / : ';
                                                    echo 
    $array_pays[$code_country_min] . ' / ' $long ' / ' $zone "<br />\n";
                                                    echo 
    "\t" $continent;
                                                    echo 
    "\t" 'Pays / Longitude / Zone / : ';
                                                    echo 
    $array_pays[$code_country_min_after] . ' / ' $long_after ' / ' $zone_after "<br />\n";
                                                    echo 
    "<br />\n";
                                                    echo 
    "\t\tConnexion blocked.<br /><br />\n";
                                                    
    /**
                                                    * la longitude
                                                    * du browser
                                                    * indique
                                                    * un zoneName
                                                    * qui est
                                                    * dans la liste
                                                    * des zoneName
                                                    * à filtrer.
                                                    **/
                                                    
    return true;
                                            }
                                            elseif((
    $longitude_browser >= $long)&&
                                                    (
    $longitude_browser <= $long_after))
                                            {
                                                    echo 
    "\t" $continent;
                                                    echo 
    "\t" 'Pays / Longitude / Zone / : ';
                                                    echo 
    $array_pays[$code_country_min] . ' / ' $long ' / ' $zone "<br />\n";
                                                    echo 
    "\t" $continent;
                                                    echo 
    "\t" 'Pays / Longitude / Zone / : ';
                                                    echo 
    $array_pays[$code_country_min_after] . ' / ' $long_after ' / ' $zone_after "<br />\n";
                                                    echo 
    "<br />\n";
                                            }
                                    }
                            }
                    }
            }
            echo 
    "\t\tYou are allowed to connect.<br /><br />\n";
            return 
    false;
    }

    bloque_zone_fuseau(2.4, array('Europe/Paris'));
    ?>

    Résultat :

    Code:
    
        AFRICA    Pays / Longitude / Zone / : Niger / 2.11666 / Africa/Niamey<br />
        AFRICA    Pays / Longitude / Zone / : Benin / 2.61666 / Africa/Porto-Novo<br />
    <br />
        ANTARCTICA    Pays / Longitude / Zone / : Antarctica / -64.09999 / Antarctica/Palmer<br />
        ANTARCTICA    Pays / Longitude / Zone / : Antarctica / 2.53499 / Antarctica/Troll<br />
    <br />
    <br />    Longitude à filtrer : 2.4<br /><br />
        EUROPE    Pays / Longitude / Zone / : France / 2.33333 / Europe/Paris<br />
        EUROPE    Pays / Longitude / Zone / : Belgium / 4.33333 / Europe/Brussels<br />
    <br />
            Connexion blocked.<br /><br />
    
    
     
  10. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 522
    J'aime reçus:
    28
    Bonjour

    Voilà le petit programme donnant théoriquement la longitude du browser par rapport à UTC :

    https://www.pronostics-courses.fr/longitude.php

    Il semble que l'heure locale ait des secondes fausses.

    A partir de Paris heure d'hiver ( UTC + 1 ), j'obtiens du 14° ou 15° de longitude.

    Ce programme est un préliminaire à la routine de filtrage.

    Je ne sais pas encore comment savoir le zoneName ( ex.
    'Europe/Paris' ) à partir de la longitude.

    C'est seulement si le zoneName peut être un critère de filtrage.

    Essayez si vous voulez.

    Amicalement.
     
  11. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 522
    J'aime reçus:
    28
    Voilà, voilà

    Voici l'url à tester :

    http://www.pronostics-courses.fr/bloque_zoneName.php

    Il calcule la longitude du browser / UTC, et en fonction du paramètre zoneName=, indique ou non 'blocked'.

    Le calcul de longitude de mon browser semble foireux, j'obtiens environ 14° par rapport à UTC.

    Je suis à Europe/Paris.

    Je donnerai le programme entier après.

    Le code pour la longitude :

    PHP:


    <?php
    session_start
    ();
    /**
     * Le timestamp
     * donne l'heure locale
     * du browser.
     *
     * Il y a filtrage
     * ( rend false ),
     * si la longitude
     * du browser
     * est dans
     * l'intervalle
     * filtré.
     **/
    function LongitudeBrowser(int $timestamp)
    {
        
    //    var timestamp = 12 * 50 * 24 * 60 * 60 * year + 50 * 24 * 60 * 60 * month + 24 * 60 * 60 * day + 60 * 60 * hour + 60 * minute + second;\n";
        
    $year floor($timestamp / (12 50 24 60 60));
        
    $timestamp %= (12 50 24 60 60);
        
    $month floor($timestamp / (50 24 60 60));
        
    $timestamp %= (50 24 60 60);
        
    $day floor($timestamp / (24 60 60));
        
    $timestamp %= (24 60 60);
        
    $hour floor($timestamp / (60 60));
        
    $timestamp %= (60 60);
        
    $minute floor($timestamp 60);
        
    $second $minute 60;
        
    $date_locale $year "-" substr("00" $month, -2) . "-" substr("00" $day, -2) . " " substr("00"$hour, -2) . ":" substr("0" $minute, -2) . ":" substr("00" $second,- 2);
        
    $date_browser = new DateTime($date_locale, new DateTimeZone('UTC'));
        
    $date_now = new DateTime("now", new DateTimeZone('UTC'));
        
    /**
        * Calcul décalage
        * Browser => UTC.
        **/
        
    $decalage_utc_browser $date_browser->diff($date_now);
        
    /**
        * Calcul offset
        * Browser => UTC.
        **/
        
    $offset_utc_browser $decalage_utc_browser->format('%H:%I:%s');
        
    $_SESSION['decalage'] = $offset_utc_browser;
        
    /**
        * Calcul
        * nombre
        * de degrés
        * Browser => UTC.
        **/
        
    $array_offset = array();
        
    $array_offset explode(':'$offset_utc_browser);
        
    $delta_utc_browser 3600 $array_offset[0] + 60 $array_offset[1] + $array_offset[2];
        
    /**
        * Calcul
        * de la différence
        * de longitude
        * entre le browser
        * et UTC.
        **/
        
    $long_utc_browser $delta_utc_browser * (360.0 / (24.0 3600.0));
        
    $_COOKIE['longitude'] = $long_utc_browser;
        echo 
    "\tLongitude du Browser = ";
        echo 
    $long_utc_browser;
        echo 
    "<br /><br />\n";
        return 
    $long_utc_browser;
    }
    function 
    bloque_zoneNames($title, array $array_zoneNames)
    {
        if(!isset(
    $_GET['timestamp']))
        {
            
    $str  "<!DOCTYPE html>\n";
            
    $str .= "<html lang=\"fr\">\n";
            
    $str .= "<head>\n";
            
    $str .= "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n";
            
    $str .= "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n";
            
    $str .= "<script>\n";
            
    $str .= "\n";
            
    $str .= "    window.newLocation = function( location ) {\n";
            
    $str .= "        var newLocation = ( typeof location === 'string' ) ? location : window.location.href;\n";
            
    $str .= "        var appendType = ( newLocation.indexOf('?') < 0 ) ? '?' : '&';\n";
            
    $str .= "        window.location = newLocation + appendType + '_t=' + (new Date()).getTime();\n";
            
    $str .= "    }\n";
            
    $str .= "\n";
            
    $str .= "function lien() {\n";
            
    $str .= "    var date_visitor = new Date();\n";
            
    $str .= "    var year    = date_visitor.getFullYear();\n";
            
    $str .= "    var month    = 1 + date_visitor.getMonth();\n";
            
    $str .= "    var day    = date_visitor.getDate();\n";
            
    $str .= "    var hour    = date_visitor.getHours();\n";
            
    $str .= "    var minute    = date_visitor.getMinutes();\n";
            
    $str .= "    var second    = date_visitor.getSeconds();\n";
            
    $str .= "\n";
            
    $str .= "    var timestamp = 12 * 50 * 24 * 60 * 60 * year + 50 * 24 * 60 * 60 * month + 24 * 60 * 60 * day + 60 * 60 * hour + 60 * minute + second;\n";
            
    $str .= "\n";
            
    $str .= "    var  chainurl='" $_SERVER['PHP_SELF'] . "?zoneName=" $_GET['zoneName'] . "&timestamp=' + timestamp;\n";
            
    $str .= "    window.newLocation(chainurl);\n";
            
    $str .= "}\n";
            
    $str .= "</script>\n";
            
    $str .= "<title>" $title "</title>\n";
            
    $str .= "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n";
            
    $str .= "</head>\n";
            echo 
    $str;
            echo 
    "<body onLoad=lien()>\n";
            return 
    null;
        }
        else if (!isset(
    $_SESSION['decalage']))
        {
            if(isset(
    $_GET['timestamp']))
            {
                
    $timestamp = (int)$_GET['timestamp'];
                
    $long_browser LongitudeBrowser($timestamp);
                return 
    bloque_zone_fuseau($long_browser$array_zoneNames);
            }
        }
    }
    $title "Page d'accueil";
    $array_zoneNames = array();
    if(!isset(
    $_GET['zoneName']))
    {
        echo 
    "\t\t\tUsage : " $_SERVER['PHP_SELF'] . '?zoneName=value' "<br /><br />\n";
        echo 
    "\t\t\tExemple : " $_SERVER['PHP_SELF'] . "?zoneName=Europe/Paris" "<br /><br />\n";
        exit(-
    1);
    }
    $zoneName $_GET['zoneName'];
    bloque_zoneNames($title, array($zoneName));
    echo 
    "<br /><br />\n";
    session_destroy();
    ?>

     
  12. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 522
    J'aime reçus:
    28
    Pardon

    Le problème c'est probablement le getTransitions[isdst], heure été/hiver.

    A supposer que je prenne la longitude corrigée pour un isdst égal à 0, il faudrait que dans le cas où isdst = 1, j'enlève 15° de la longitude.

    Ceci, dans la fonction LongitudeBrowser() et dans la fonction appelée par bloque_zoneNames().

    Pas à pas.

    Amicalement.
     
  13. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 522
    J'aime reçus:
    28
    Bonjour

    Merci de me dire si la formule suivante est correcte ( en Javascript ) :

    var offsetBrowser = -1 * today.getTimezoneOffset() - 60 * isDST;\n";

    isDST = 0 heure d'hiver, 1 heure d'été de l'heure locale.

    today = new Date;

    L'offset est négatif si UTC + n , n > 0.

    Je corrige en multipliant par -1.

    Merci beaucoup de votre aide.
     
  14. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 522
    J'aime reçus:
    28
    Bonjour

    Testez si vous voulez :

    https://www.pronostics-courses.fr/tmp.php?zoneName=Europe/Paris

    Ou avec d'autres zones.

    Si la zone à filtrer correspond à la longitude du browser ( en tenant compte éventuellement du isDST ), alors c'est bloqué.

    Dans tous les cas, la longitude du browser y est.

    J'ai un bug dans le calcul des longitudes, car Paris devrait être environ 0° et non pas 15°.

    Mais le bug semble affecter toutes les longitudes.

    Amicalement.
     
    #14 ortolojf, 27 Novembre 2020
    Dernière édition: 27 Novembre 2020
  15. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 522
    J'aime reçus:
    28
    Voilà, pour KOogar

    Je trie les longitudes en les insérant dans la variable indicée : $array_sorted_all[].

    Je pourrais je crois ne pas les trier.

    Le code entier de filtrage ( PHP + Javascript ) :

    PHP:

    <?php
    session_start
    ();
    /**
     * Trier
     * par array_zones
     * en ordre croissant
     * des longitudes,
     * mimimum et maximum
     * pour chaques zoneName.
     *
     * Il faut donc trier
     * les zoneName
     * par ordre croissant
     * des longitudes
     * dans chaque
     * array_zone.
     *
     * par [array_zone][indice_tri]
     * pour chaque indice_tri
     * son zoneName et
     * ses longitudes
     * min et max.
     *
     **/
    define('MIN'0);
    define('MAX'1);
    define('ZONE'0);
    define('LONG'1);
    function 
    readTransition(array $transitions)
    {
            foreach(
    $transitions as $transition)
            {
                    
    $time    $transition['time'];
                    
    $offset    $transition['offset'];
                    
    $isdst    = (int)$transition['isdst'];
                    if(
    $isdst == 1)
                    {
                            continue;
                    }
                    return array(
    'ISDST' => $isdst,
                            
    'TIME' => $time,
                            
    'OFFSET' => $offset);
            }
            return array(
    'ISDST' => $isdst,
                    
    'TIME' => $time,
                    
    'OFFSET' => $offset);
    }
    function 
    ALL_geoData()
    {
            
    $now time();
            
    $array_indice        = array();        // By zone
            
    $array_sorted_all    = array();        // [MIN] => minimum, [MAX] => maximum - [ZONE] => zoneName, [LONG] => $longitude.
            
    $array_zones = array(
                    
    DateTimeZone::AFRICA,
                    
    DateTimeZone::AMERICA,
                    
    DateTimeZone::ANTARCTICA,
                    
    DateTimeZone::ARCTIC,
                    
    DateTimeZone::ASIA,
                    
    DateTimeZone::ATLANTIC,
                    
    DateTimeZone::AUSTRALIA,
                    
    DateTimeZone::EUROPE,
                    
    DateTimeZone::INDIAN,
                    
    DateTimeZone::PACIFIC);
            
    /**
            * Parcours
            * de tous les
            * offsets
            * de tous les
            * fuseaux horaires.
            **/
            
    foreach($array_zones as $value)
            {
                    unset(
    $timeZones);
                    
    $timeZones DateTimeZone::listIdentifiers($value);
                    foreach ( 
    $timeZones as $zoneName )
                    {
                            unset(
    $dateTimeZone);
                            
    $dateTimeZone = new DateTimeZone($zoneName);
                            unset(
    $transitions);
                            
    $transitions $dateTimeZone->getTransitions($now$now);
                            unset(
    $array_transitions);
                            
    $array_transitions readTransition($transitions);
                            unset(
    $tmp_isdst);
                            unset(
    $tmp_time);
                            unset(
    $tmp_offset);
                            
    $tmp_isdst    $array_transitions['ISDST'];
                            
    $tmp_time    $array_transitions['TIME'];
                            
    $tmp_offset    $array_transitions['OFFSET'];
                            unset(
    $longitude);
                            
    $longitude = ($tmp_offset - (3600.0 $tmp_isdst)) * (360.0 / (24.0 3600.0));
                            if(isset(
    $array_indice[$value][MAX]))
                            {
                                    for(
    $i 0$i <= $array_indice[$value][MAX]; $i++)
                                    {
                                            if(
    $array_sorted_all[$value][MAX][LONG][$i] > $longitude)
                                            {
                                                    break;
                                            }
                                    }
                                    if(
    $i <= $array_indice[$value][MAX])
                                    {
                                            for(
    $j $array_indice[$value][MAX]; $j >= $i$j--)
                                            {
                                                    
    $array_sorted_all[$value][MAX][ZONE][$j 1] = $array_sorted_all[$value][MAX][ZONE][$j];
                                                    
    $array_sorted_all[$value][MAX][LONG][$j 1] = $array_sorted_all[$value][MAX][LONG][$j];
                                            }
                                            
    $array_sorted_all[$value][MAX][ZONE][$i] = $zoneName;
                                            
    $array_sorted_all[$value][MAX][LONG][$i] = $longitude;
                                    }
                                    else
                                    {
                                            
    $array_sorted_all[$value][MAX][ZONE][$i] = $zoneName;
                                            
    $array_sorted_all[$value][MAX][LONG][$i] = $longitude;
                                    }
                                    
    $array_indice[$value][MAX] = $array_indice[$value][MAX] + 1;
                            }
                            else
                            {
                                    
    $array_indice[$value][MAX] = 0;
                                    
    $array_sorted_all[$value][MAX][ZONE][0] = $zoneName;
                                    
    $array_sorted_all[$value][MAX][LONG][0] = $longitude;
                            }
                            if(isset(
    $array_indice[$value][MIN]))
                            {
                                    for(
    $i 0$i <= $array_indice[$value][MIN]; $i++)
                                    {
                                            if(
    $array_sorted_all[$value][MIN][LONG][$i] > $longitude)
                                            {
                                                    break;
                                            }
                                    }
                                    if(
    $i <= $array_indice[$value][MIN])
                                    {
                                            for(
    $j $array_indice[$value][MIN]; $j >= $i$j--)
                                            {
                                                    
    $array_sorted_all[$value][MIN][ZONE][$j 1] = $array_sorted_all[$value][MIN][ZONE][$j];
                                                    
    $array_sorted_all[$value][MIN][LONG][$j 1] = $array_sorted_all[$value][MIN][LONG][$j];
                                            }
                                            
    $array_sorted_all[$value][MIN][ZONE][$i] = $zoneName;
                                            
    $array_sorted_all[$value][MIN][LONG][$i] = $longitude;
                                    }
                                    else
                                    {
                                            
    $array_sorted_all[$value][MIN][ZONE][$i] = $zoneName;
                                            
    $array_sorted_all[$value][MIN][LONG][$i] = $longitude;
                                    }
                                    
    $array_indice[$value][MIN] = $array_indice[$value][MIN] + 1;
                            }
                            else
                            {
                                    
    $array_indice[$value][MIN] = 0;
                                    
    $array_sorted_all[$value][MIN][ZONE][0] = $zoneName;
                                    
    $array_sorted_all[$value][MIN][LONG][0] = $longitude;
                            }
                    }
            }
            return array(
    $array_indice$array_sorted_all);
    }
    /**
     * false => bloqué
     * true  => pas bloqué.
     *
     * Paramètre :
     * $array_zone
     * à filtrer.
     **/
    function bloque_zone_fuseau(float $longitude_browser, array $array_zoneNames)
    {
            
    $array_zones_names = array(
                    
    DateTimeZone::AFRICA        => 'DateTimeZone::AFRICA',
                    
    DateTimeZone::AMERICA        => 'DateTimeZone::AMERICA',
                    
    DateTimeZone::ANTARCTICA    => 'DateTimeZone::ANTARCTICA',
                    
    DateTimeZone::ARCTIC        => 'DateTimeZone::ARCTIC',
                    
    DateTimeZone::ASIA            => 'DateTimeZone::ASIA',
                    
    DateTimeZone::ATLANTIC        => 'DateTimeZone::ATLANTIC',
                    
    DateTimeZone::AUSTRALIA        => 'DateTimeZone::AUSTRALIA',
                    
    DateTimeZone::EUROPE        => 'DateTimeZone::EUROPE',
                    
    DateTimeZone::INDIAN        => 'DateTimeZone::INDIAN',
                    
    DateTimeZone::PACIFIC        => 'DateTimeZone::PACIFIC');
            echo 
    "<br />\t" 'Longitude à filtrer : ';
            echo 
    $longitude_browser "<br /><br />\n";
            echo 
    "\t" 'Zone à filtrer : ';
            
    print_r($array_zoneNames);
            echo 
    "<br /><br />\n";
            
    $array_result = array();
            
    $array_result ALL_geoData();
            foreach(
    $array_zones_names as $key => $value)
            {
                    unset(
    $indice_min);
                    unset(
    $indice_max);
                    
    $indice_min $array_result[0][$key][MIN];
                    
    $indice_max $array_result[0][$key][MAX];
                    unset(
    $indice);
                    
    $indice min($indice_min$indice_max);
                    for(
    $i 0$i $indice$i++)
                    {
                            unset(
    $zone_min);
                            unset(
    $zone_max);
                            
    $zone_min = (!empty($array_result[1][$key][MIN][ZONE][$i])) ? $array_result[1][$key][MIN][ZONE][$i] : $array_result[1][$key][MAX][ZONE][$i];
                            
    $zone_max = (!empty($array_result[1][$key][MAX][ZONE][$i])) ? $array_result[1][$key][MAX][ZONE][$i] : $array_result[1][$key][MIN][ZONE][$i];
                            unset(
    $zone_min_after);
                            unset(
    $zone_max_after);
                            
    $zone_min_after = (!empty($array_result[1][$key][MIN][ZONE][$i 1])) ? $array_result[1][$key][MIN][ZONE][$i 1] : $array_result[1][$key][MAX][ZONE][$i 1];
                            
    $zone_max_after = (!empty($array_result[1][$key][MAX][ZONE][$i 1])) ? $array_result[1][$key][MAX][ZONE][$i 1] : $array_result[1][$key][MIN][ZONE][$i 1];
                            unset(
    $long_min);
                            unset(
    $long_max);
                            
    $long_min = ($array_result[1][$key][MIN][LONG][$i] != 5000000.0) ? $array_result[1][$key][MIN][LONG][$i] : 0;
                            
    $long_max = ($array_result[1][$key][MAX][LONG][$i] != 5000000.0) ? $array_result[1][$key][MAX][LONG][$i] : 0;
                            unset(
    $long_min_after);
                            unset(
    $long_max_after);
                            
    $long_min_after = ($array_result[1][$key][MIN][LONG][$i 1] != 5000000.0) ? $array_result[1][$key][MIN][LONG][$i 1] : 0;
                            
    $long_max_after = ($array_result[1][$key][MAX][LONG][$i 1] != 5000000.0) ? $array_result[1][$key][MAX][LONG][$i 1] : 0;
                            unset(
    $continent);
                            
    $continent preg_replace("{^DateTimeZone::}"""$value);
                            unset(
    $zone);
                            unset(
    $zone_after);
                            unset(
    $long);
                            unset(
    $long_after);
                            if((
    $zone_min == $zone_max) &&
                                    (
    $zone_min_after == $zone_max_after) &&
                                    (
    $long_min == $long_max)&&
                                    (
    $long_min_after == $long_max_after))
                            {
                                    
    $zone $zone_min;
                                    
    $zone_after $zone_min_after;
                                    
    $long $long_min;
                                    
    $long_after $long_min_after;
                                    if((
    $longitude_browser >= $long)&&
                                            (
    $longitude_browser <= $long_after)&&
                                            ((
    in_array($zone$array_zoneNames))||
                                            
    in_array($zone_after$array_zoneNames)))
                                    {
                                            echo 
    "\t" $continent;
                                            echo 
    "\t" 'Longitude / Zone / : ';
                                            echo 
    $long ' / ' $zone "<br />\n";
                                            echo 
    "\t" $continent;
                                            echo 
    "\t" 'Longitude / Zone / : ';
                                            echo 
    $long_after ' / ' $zone_after "<br />\n";
                                            echo 
    "<br />\n";
                                            echo 
    "\t\tConnexion blocked.<br /><br />\n";
                                            
    /**
                                            * la longitude
                                            * du browser
                                            * indique
                                            * un zoneName
                                            * qui est
                                            * dans la liste
                                            * des zoneName
                                            * à filtrer.
                                            **/
                                            
    return false;
                                    }
                            }
                    }
            }
            echo 
    "\t\tYou are allowed to connect.<br /><br />\n";
            return 
    true;
    }
    function 
    bloque_zoneNames($title, array $array_zoneNames)
    {
            if(!isset(
    $_GET['offset']))
            {
                    
    $str  "<!DOCTYPE html>\n";
                    
    $str .= "<html lang=\"fr\">\n";
                    
    $str .= "<head>\n";
                    
    $str .= "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n";
                    
    $str .= "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n";
                    
    $str .= "<script>\n";
                    
    $str .= "\n";
                    
    $str .= "    window.newLocation = function( location ) {\n";
                    
    $str .= "        var newLocation = ( typeof location === 'string' ) ? location : window.location.href;\n";
                    
    $str .= "        var appendType = ( newLocation.indexOf('?') < 0 ) ? '?' : '&';\n";
                    
    $str .= "        window.location = newLocation + appendType + '_t=' + (new Date()).getTime();\n";
                    
    $str .= "    }\n";
                    
    $str .= "\n";
                    
    $str .= "function is_DST_Used_In_This_TimeZone(todayDate) {\n";
                    
    $str .= "\n";
                    
    $str .= "        var Jan_Date, July_Date, today;\n";
                    
    $str .= "        var jan_Timezone_OffSet, july_Timezone_OffSet, today_Timezone_OffSet;\n";
                    
    $str .= "\n";
                    
    $str .= "        var offsetsNotEqual, thisYear, offsetsTodayNotEqual, isDST;\n";
                    
    $str .= "\n";
                    
    $str .= "        thisYear = todayDate.getFullYear();//Get the year as a number;\n";
                    
    $str .= "        today_Timezone_OffSet = todayDate.getTimezoneOffset();\n";
                    
    $str .= "\n";
                    
    $str .= "        Jan_Date = new Date(thisYear, 0, 1);//Month is zero indexed - Jan is zero;\n";
                    
    $str .= "        jan_Timezone_OffSet = Jan_Date.getTimezoneOffset();\n";
                    
    $str .= "\n";
                    
    $str .= "        console.log('jan_Timezone_OffSet: ' + jan_Timezone_OffSet);\n";
                    
    $str .= "\n";
                    
    $str .= "        July_Date = new Date(thisYear, 6, 1);\n";
                    
    $str .= "        july_Timezone_OffSet = July_Date.getTimezoneOffset();\n";
                    
    $str .= "\n";
                    
    $str .= "        console.log('july_Timezone_OffSet: ' + july_Timezone_OffSet);\n";
                    
    $str .= "\n";
                    
    $str .= "        offsetsNotEqual = july_Timezone_OffSet !== jan_Timezone_OffSet;//True if not equal;\n";
                    
    $str .= "\n";
                    
    $str .= "        console.log('offsetsNotEqual: ' + offsetsNotEqual);\n";
                    
    $str .= "\n";
                    
    $str .= "        offsetsTodayNotEqual = jan_Timezone_OffSet !== today_Timezone_OffSet;//True if not equal;\n";
                    
    $str .= "\n";
                    
    $str .= "        isDST = offsetsNotEqual && offsetsTodayNotEqual;\n";
                    
    $str .= "\n";
                    
    $str .= "        /************************************************/\n";
                    
    $str .= "        /**    If the offsets are not equal for summer and    */\n";
                    
    $str .= "        /**    winter and for winter and today                */\n";
                    
    $str .= "        /**    then the only possible reason is that DST    */\n";
                    
    $str .= "        /**    is activated for this time zone.            */\n";
                    
    $str .= "        /************************************************/\n";
                    
    $str .= "        return isDST;\n";
                    
    $str .= "}\n";
                    
    $str .= "\n";
                    
    $str .= "function lien() {\n";
                    
    $str .= "\n";
                    
    $str .= "    var today = new Date();//Create a date object that is now;\n";
                    
    $str .= "    var isDST = is_DST_Used_In_This_TimeZone(today);\n";
                    
    $str .= "\n";
                    
    $str .= "    /************************************************/\n";
                    
    $str .= "    /**            Browser offset in minutes            */\n";
                    
    $str .= "    /************************************************/\n";
                    
    $str .= "    var offsetBrowser = -1 * today.getTimezoneOffset() - 60 * isDST;\n";
                    
    $str .= "\n";
                    
    $str .= "    var  chainurl='" $_SERVER['PHP_SELF'] . "?zoneName=" $_GET['zoneName'] . "&offset=' + offsetBrowser;\n";
                    
    $str .= "\n";
                    
    $str .= "    window.newLocation(chainurl);\n";
                    
    $str .= "}\n";
                    
    $str .= "</script>\n";
                    
    $str .= "<title>" $title "</title>\n";
                    
    $str .= "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n";
                    
    $str .= "</head>\n";
                    echo 
    $str;
                    echo 
    "<body onLoad=lien()>\n";
                    return 
    null;
            }
            else if (!isset(
    $_SESSION['longitude_browser']))
            {
                    if(isset(
    $_GET['offset']))
                    {
                            
    $offset = (int)$_GET['offset'];
                            
    $longitude_browser $offset * (360.0 / (24.0 60.0));
                            
    $_SESSION['longitude_browser'] = $longitude_browser;
                            return 
    bloque_zone_fuseau($longitude_browser$array_zoneNames);
                    }
            }
    }
    $title "Page d'accueil";
    $array_zoneNames = array();
    if(!isset(
    $_GET['zoneName']))
    {
            echo 
    "\t\t\tUsage : " $_SERVER['PHP_SELF'] . '?zoneName=value' "<br /><br />\n";
            echo 
    "\t\t\tExemple : " $_SERVER['PHP_SELF'] . "?zoneName=Europe/Paris" "<br /><br />\n";
            exit(-
    1);
    }
    $zoneName $_GET['zoneName'];
    bloque_zoneNames($title, array($zoneName));
    echo 
    "<br /><br />\n";
    session_destroy();
    ?>

     
Chargement...
Similar Threads - Problème calcul offset Forum Date
Ecosia : problème d'indexation Autres moteurs de recherche connus Samedi à 18:34
Search Console Problème récurrent d'ergonomie mobile Demandes d'avis et de conseils sur vos sites Samedi à 10:26
Problèmes dans le méta-titre / description + Sitemap Référencement Google 29 Novembre 2021
Problème paramétrage HTTP2 sur Nginx Administration d'un site Web 22 Novembre 2021
Search Console Problèmes réguliers d'ergonomie mobile sans modification Problèmes de référencement spécifiques à vos sites 18 Novembre 2021
Problème title/H1 thème Astra Problèmes de référencement spécifiques à vos sites 30 Octobre 2021
Search Console Problème avec page ads.txt Référencement Google 23 Octobre 2021
Problèmes avec OVH. Le café de WebRankInfo 8 Octobre 2021
Authentification forte : problème de paiement ? e-commerce 7 Octobre 2021
Multiples problèmes sur GA Google Analytics 28 Septembre 2021