سؤال

هل هناك طريقة قياسية على ملقم ويب أن تكون قادرة على تحديد المستخدم التوقيت في صفحة ويب ؟

ربما من رأس HTTP أو جزء من user-agent السلسلة ؟

لا يوجد حل صحيح

نصائح أخرى

-new Date().getTimezoneOffset()/60;

طريقة getTimezoneOffset() طرح وقتك من جرينيتش و عودة عدد من دقيقة.حتى إذا كنت تعيش في GMT-8 ، فإنه سيعود 480.

لوضع هذا في ساعات القسمة على 60.كما تلاحظ أن التوقيع هو عكس ما تحتاجه هو حساب GMT هو تعويض من المنطقة الزمنية الخاصة بك ، وليس المنطقة الزمنية الخاصة بك هو تعويض عن توقيت غرينتش.لحل هذه المشكلة, ببساطة ضرب -1.

نلاحظ أيضا أن w3school يقول:

القيمة التي تم إرجاعها غير ثابت ، بسبب ممارسة استخدام التوقيت الصيفي.

الأكثر شعبية (==المعيار؟) طريقة تحديد المنطقة الزمنية لقد رأيت حول ببساطة يسأل المستخدمين أنفسهم. إذا كان موقع الويب الخاص بك يتطلب الاشتراك, هذا يمكن أن يتم حفظها في المستخدمين من البيانات الشخصية.بالنسبة حالا المستخدمين ، التواريخ يمكن عرضها على النحو UTC أو جرينيتش أو بعض من هذا القبيل.

أنا لا أحاول أن أكون شخص مغرور.انها مجرد أنه في بعض الأحيان بعض المشاكل الدقيقة حلول خارج أي سياق البرمجة.

لا توجد رؤوس HTTP أن تقريرا العملاء التوقيت حتى الآن على الرغم من أنه قد اقترح أن تدرج في مواصفات HTTP.

إذا كان لي ، أنا ربما في محاولة لجلب التوقيت باستخدام clientside جافا سكريبت ثم إرساله إلى الخادم باستخدام Ajax أو شيء من هذا.

جافا سكريبت هي أسهل طريقة للحصول على العميل بالتوقيت المحلي.أود أن أقترح استخدام مدعوم إرسال الظهر بالتوقيت المحلي ، وإذا فشل ذلك ، فال تعود إلى التوقيت الكشف استنادا إلى عنوان IP الخاصة بهم.

بقدر تحديد الموقع الجغرافي, لقد استعملت MaxMind GeoIP على العديد من المشاريع و أنه يعمل بشكل جيد, على الرغم من أنني لست متأكدا إذا ما توفر التوقيت البيانات.إنها الخدمة التي تدفع وأنها توفر التحديثات الشهرية إلى قاعدة البيانات الخاصة بك.أنها توفر مغلفة في عدة لغات ويب.

هنا هو قوي جافا سكريبت حل لتحديد المنطقة الزمنية المتصفح هو في.

>>> var timezone = jstz.determine();
>>> timezone.name(); 
"Europe/London"

https://bitbucket.org/pellepim/jstimezonedetect

هنا هو أكثر اكتمالا الطريق.

  1. الحصول على التوقيت إزاحة المستخدم
  2. اختبار بعض الأيام على الصيفي حدود لتحديد ما إذا كانوا في المنطقة التي تستخدم التوقيت الصيفي.

مقتطفات أدناه:

function TimezoneDetect(){
    var dtDate = new Date('1/1/' + (new Date()).getUTCFullYear());
    var intOffset = 10000; //set initial offset high so it is adjusted on the first attempt
    var intMonth;
    var intHoursUtc;
    var intHours;
    var intDaysMultiplyBy;

    // Go through each month to find the lowest offset to account for DST
    for (intMonth=0;intMonth < 12;intMonth++){
        //go to the next month
        dtDate.setUTCMonth(dtDate.getUTCMonth() + 1);

        // To ignore daylight saving time look for the lowest offset.
        // Since, during DST, the clock moves forward, it'll be a bigger number.
        if (intOffset > (dtDate.getTimezoneOffset() * (-1))){
            intOffset = (dtDate.getTimezoneOffset() * (-1));
        }
    }

    return intOffset;
}

الحصول على TZ التوقيت الصيفي من شبيبة (عبر طريق العودة الجهاز)

أولا نفهم أن المنطقة الزمنية الكشف في جافا سكريبت هو الكمال.يمكنك الحصول على المحلية إزاحة المنطقة الزمنية خاصة التاريخ والوقت باستخدام getTimezoneOffset على سبيل المثال من Date كائن ، ولكن هذا ليس تماما نفس كامل IANA المنطقة الزمنية مثل America/Los_Angeles.

هناك بعض الخيارات التي يمكن أن تعمل على الرغم من:

  • معظم المتصفحات الحديثة دعم IANA المناطق الزمنية في تنفيذ ECMAScript تدويل API, لذا يمكنك القيام بذلك:

    const tzid = Intl.DateTimeFormat().resolvedOptions().timeZone;
    

    والنتيجة هي سلسلة تحتوي IANA إعداد المنطقة الزمنية على الكمبيوتر حيث يتم تشغيل التعليمات البرمجية.

    البيئات المعتمدة المدرجة في جدول التوافق الدولي.توسيع DateTimeFormat القسم وإلقاء نظرة على ميزة اسمه resolvedOptions().timeZone defaults to the host environment.

    • بعض المكتبات مثل Luxon استخدام هذا API لتحديد المنطقة الزمنية من خلال وظائف مثل luxon.Settings.defaultZoneName.
  • إذا كنت بحاجة إلى دعم أوسع مجموعة من البيئات ، مثل كبار السن متصفحات الويب ، يمكنك استخدام مكتبة لجعل تخمين في المنطقة الزمنية.وهي تعمل عن طريق أول محاولة Intl API إذا كانت متوفرة, و عندما لا يكون متاحا ، فإنها استجواب getTimezoneOffset وظيفة Date وجوه عدة نقاط مختلفة في الوقت المناسب ، باستخدام نتائج اختيار الوقت المناسب المنطقة من داخلي مجموعة البيانات.

    سواء jsTimezoneDetect و لحظة-التوقيت لديك هذه الوظيفة.

    // using jsTimeZoneDetect
    var tzid = jstz.determine().name();
    
    // using moment-timezone
    var tzid = moment.tz.guess();
    

    في كلتا الحالتين فإن النتيجة لا يمكن إلا أن تكون من حيث الفكر تخمين.تخمين قد تكون صحيحة في كثير من الحالات, ولكن ليس كل منهم.

    بالإضافة إلى ذلك, هذه المكتبات إلى تحديث بشكل دوري لمواجهة حقيقة أن العديد من كبار السن جافا سكريبت تطبيقات فقط على علم الحالي التوقيت الصيفي القاعدة في منطقتهم المحلية. المزيد من التفاصيل هنا.

في نهاية المطاف أفضل نهج هو أن تسأل المستخدم الخاص بك من أجل المنطقة الزمنية الخاصة بها.توفير الإعداد الذي يمكنهم تغيير.يمكنك استخدام أحد الخيارات أعلاه لاختيار الافتراضي الإعداد, ولكن لا تجعل من المستحيل أن يحيد عن ذلك في التطبيق الخاص بك.

هناك أيضا مختلفة تماما نهج لا والاعتماد على إعداد المنطقة الزمنية على كمبيوتر المستخدم على الإطلاق.بدلا من ذلك, إذا كان يمكنك جمع إحداثيات الطول والعرض, يمكنك حل تلك المنطقة الزمنية باستخدام واحدة من هذه الطرق.هذا يعمل بشكل جيد على الأجهزة النقالة.

باستخدام Unkwntech نهج كتبت الدالة باستخدام مسج و PHP.هذا هو اختبار و لا عمل!

على صفحة PHP حيث كنت تريد أن يكون التوقيت حسب متغير ، يكون هذا مقتطف من التعليمات البرمجية في مكان ما بالقرب من أعلى الصفحة:

<?php
    session_start();
    $timezone = $_SESSION['time'];
?>

وهذه قراءة متغير جلسة "الوقت" التي نحن الآن على وشك إنشاء.

على نفس الصفحة ، <head>تحتاج أولا أن تشمل مسج:

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>

أيضا في <head>تحت مسج, لصق هذا:

<script type="text/javascript">
    $(document).ready(function() {
        if("<?php echo $timezone; ?>".length==0){
            var visitortime = new Date();
            var visitortimezone = "GMT " + -visitortime.getTimezoneOffset()/60;
            $.ajax({
                type: "GET",
                url: "http://example.org/timezone.php",
                data: 'time='+ visitortimezone,
                success: function(){
                    location.reload();
                }
            });
        }
    });
</script>

كنت قد أو قد لا يكون لاحظت ، ولكن كنت بحاجة إلى تغيير عنوان URL الخاص بك الفعلية المجال.

شيء واحد آخر.كنت ربما يتساءل ما هيك timezone.php هو.حسنا, هذا هو ببساطة:(إنشاء ملف جديد يسمى timezone.php وتشير إلى أنه مع العنوان أعلاه)

<?php
    session_start();
    $_SESSION['time'] = $_GET['time'];
?>

إذا كان هذا يعمل بشكل صحيح ، تحميل الصفحة ، تنفيذ جافا سكريبت و إعادة تحميل الصفحة.ثم سوف تكون قادرا على قراءة $التوقيت المتغير واستخدامه لمتعتك!فإنه يعود الحالي UTC/GMT إزاحة المنطقة الزمنية (GMT -7) أو أيا كان التوقيت الذي أنت فيه.

أنا لم أر إجابة مفصلة هنا أن يحصل المنطقة الزمنية.يجب أن لا حاجة إلى الترميز الجغرافي عن طريق عنوان IP أو استخدام PHP (لول) أو بشكل غير صحيح تخمين من إزاحة.

أولا منطقة زمنية ليست مجرد تعويض عن توقيت غرينتش.هو مساحة من الأرض في وقت القواعد هي مجموعة من المعايير المحلية.بعض البلدان الصيفي و التبديل على التوقيت الصيفي في اختلاف الأوقات.انها عادة ما تكون مهمة على المنطقة الفعلية ، وليس مجرد الحالي تعويض.

إذا كنت تنوي تخزين هذا التوقيت ، على سبيل المثال في تفضيلات المستخدم التي تريد المنطقة وليس فقط تعويض.بالنسبة الحقيقي التحويلات لن يهم كثيرا.

الآن ، أحصل على المنطقة الزمنية مع جافا سكريبت يمكنك استخدام هذا:

>> new Date().toTimeString();
"15:46:04 GMT+1200 (New Zealand Standard Time)"
//Use some regular expression to extract the time.

ومع ذلك وجدت أنه من الأسهل ببساطة استخدام هذا قوية البرنامج المساعد الذي ترجع أولسن تنسيق التوقيت:

https://github.com/scottwater/jquery.detect_timezone

تقديم التوقيت تعويض كما HTTP رأس على طلبات اياكس مع مسج

$.ajaxSetup({
    beforeSend: function(xhr, settings) {
        xhr.setRequestHeader("X-TZ-Offset", -new Date().getTimezoneOffset()/60);
    }
});

يمكنك أيضا أن تفعل شيئا من هذا القبيل للحصول على الوقت الفعلي باستخدام اسم المنطقة moment.tz.guess(); من http://momentjs.com/timezone/docs/#/using-timezones/guessing-user-timezone/

مع PHP date وظيفة سوف تحصل على تاريخ وقت الخادم الذي يقع الموقع.الطريقة الوحيدة للحصول على المستخدم الوقت هو استخدام جافا سكريبت.

ولكن أقترح عليك أن, إذا كان موقعك قد يتطلب التسجيل ثم فإن أفضل طريقة هي أن تسأل المستخدم في حين أن التسجيل إلزامي المجال.يمكنك سرد مختلف مناطق زمنية في صفحة التسجيل و حفظ في قاعدة البيانات.بعد هذا إذا كان المستخدم بتسجيل الدخول إلى الموقع ثم يمكنك تعيين المنطقة الزمنية الافتراضية لهذه الدورة كما لكل المستخدمين اختيار المنطقة الزمنية.

يمكنك تعيين أي منطقة زمنية معينة باستخدام وظيفة PHP date_default_timezone_set.هذا يضع المنطقة الزمنية المحدد للمستخدمين.

أساسا المستخدمين المنطقة الزمنية هو يذهب إلى العميل ، لذلك يجب علينا استخدام جافا سكريبت لهذا.

وفيما يلي النص على المستخدمين المنطقة الزمنية باستخدام PHP و جافا سكريبت.

<?php
    #http://www.php.net/manual/en/timezones.php List of Time Zones
    function showclienttime()
    {
        if(!isset($_COOKIE['GMT_bias']))
        {
?>

            <script type="text/javascript">
                var Cookies = {};
                Cookies.create = function (name, value, days) {
                    if (days) {
                        var date = new Date();
                        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
                        var expires = "; expires=" + date.toGMTString();
                    }
                    else {
                        var expires = "";
                    }
                    document.cookie = name + "=" + value + expires + "; path=/";
                    this[name] = value;
                }

                var now = new Date();
                Cookies.create("GMT_bias",now.getTimezoneOffset(),1);
                window.location = "<?php echo $_SERVER['PHP_SELF'];?>";
            </script>

            <?php

        }
        else {
          $fct_clientbias = $_COOKIE['GMT_bias'];
        }

        $fct_servertimedata = gettimeofday();
        $fct_servertime = $fct_servertimedata['sec'];
        $fct_serverbias = $fct_servertimedata['minuteswest'];
        $fct_totalbias = $fct_serverbias – $fct_clientbias;
        $fct_totalbias = $fct_totalbias * 60;
        $fct_clienttimestamp = $fct_servertime + $fct_totalbias;
        $fct_time = time();
        $fct_year = strftime("%Y", $fct_clienttimestamp);
        $fct_month = strftime("%B", $fct_clienttimestamp);
        $fct_day = strftime("%d", $fct_clienttimestamp);
        $fct_hour = strftime("%I", $fct_clienttimestamp);
        $fct_minute = strftime("%M", $fct_clienttimestamp);
        $fct_second = strftime("%S", $fct_clienttimestamp);
        $fct_am_pm = strftime("%p", $fct_clienttimestamp);
        echo $fct_day.", ".$fct_month." ".$fct_year." ( ".$fct_hour.":".$fct_minute.":".$fct_second." ".$fct_am_pm." )";
    }

    showclienttime();
?>

ولكن حسب وجهة نظري أنه من الأفضل أن تطلب إلى المستخدمين إذا كان التسجيل إلزامي في المشروع الخاص بك.

فقط جافا سكريبت getTimezoneOffset وظيفة مثل ذلك:

-new Date().getTimezoneOffset()/60;

جافا سكريبت:

function maketimus(timestampz)
{
    var linktime = new Date(timestampz * 1000);
    var linkday = linktime.getDate();
    var freakingmonths = new Array();

    freakingmonths[0]  = "jan";
    freakingmonths[1]  = "feb";
    freakingmonths[2]  = "mar";
    freakingmonths[3]  = "apr";
    freakingmonths[4]  = "may";
    freakingmonths[5]  = "jun";
    freakingmonths[6]  = "jul";
    freakingmonths[7]  = "aug";
    freakingmonths[8]  = "sep";
    freakingmonths[9]  = "oct";
    freakingmonths[10] = "nov";
    freakingmonths[11] = "dec";

    var linkmonthnum = linktime.getMonth();
    var linkmonth = freakingmonths[linkmonthnum];
    var linkyear = linktime.getFullYear();
    var linkhour = linktime.getHours();
    var linkminute = linktime.getMinutes();

    if (linkminute < 10)
    {
        linkminute = "0" + linkminute;
    }

    var fomratedtime = linkday + linkmonth + linkyear + " " +
                       linkhour + ":" + linkminute + "h";
    return fomratedtime;
}

ببساطة توفير مرات في Unix timestamp شكل هذه الدالة ؛ جافا سكريبت يعرف التوقيت المستخدم.

مثل هذا:

PHP:

echo '<script type="text/javascript">
var eltimio = maketimus('.$unix_timestamp_ofshiz.');
document.write(eltimio);
</script><noscript>pls enable javascript</noscript>';

هذا وسوف تظهر دائما مرات بشكل صحيح استنادا إلى التوقيت الشخص وقد وضعت على جهاز الكمبيوتر الخاص على مدار الساعة.لا تحتاج أن تسأل أي شيء إلى أي شخص وحفظه في الأماكن الحمد لله!

السحر كل ذلك يبدو أن في

visitortime.getTimezoneOffset()

هذا رائع لم أكن أعرف عن ذلك.يعمل في Internet Explorer ، وما إلى ذلك ؟ من هناك عليك أن تكون قادرا على استخدام جافا سكريبت اياكس, تعيين ملفات تعريف الارتباط ، أيا كان.ربما كنت اذهب كوكي الطريق نفسي.

سوف تحتاج إلى السماح للمستخدم بتغيير ذلك على الرغم من.حاولنا استخدام الموقع الجغرافي (عبر maxmind) أن تفعل هذا منذ فترة ، وأنه كان من الخطأ معقول في كثير من الأحيان - بما يكفي لجعله لا يستحق القيام به ، لذلك نحن مجرد السماح للمستخدم مجموعة في ملف و عرض إشعار إلى المستخدمين الذين لم يقع لهم حتى الآن.

لا تستخدم عنوان IP لتحديد نهائيا موقع (وبالتالي التوقيت)-- هذا هو لأنه مع نات وكلاء (شعبية متزايدة) ، الشبكات الخاصة الإفتراضية, عناوين IP ليس بالضرورة يعكس المستخدم الفعلي الموقع ولكن الموقع الذي خوادم تنفيذ هذه البروتوكولات الموجودة.

على غرار كيف لنا رموز المنطقة لم تعد مفيدة في تحديد مكان هاتف المستخدم ، نظرا لشعبية إمكانية نقل الأرقام.

عنوان IP وغيرها من التقنيات الموضحة أعلاه مفيدة مما يشير إلى الافتراضي أنه يمكن للمستخدم ضبط/الصحيح.

إذا كنت يحدث ليكون باستخدام OpenID من أجل المصادقة ، تسجيل بسيط امتداد من شأنه أن يحل مشكلة مصادقة المستخدمين (سوف تحتاج إلى تحويل من tz إلى رقمية).

سيكون هناك خيار آخر للاستدلال على المنطقة الزمنية من المستخدم الوكيل تفضيل البلاد.هذا هو إلى حد ما الخام طريقة (لن تعمل en-US) ، ولكن يجعل تقدير جيد.

هنا هو مقال (مع شفرة المصدر) الذي يشرح كيفية تحديد واستخدام مترجمة الوقت في ASP.NET (VB.NET, C#) التطبيق:

لقد حان الوقت

وباختصار ، فإن وصف نهج تعتمد على جافا سكريبت getTimezoneOffset الوظيفة التي تقوم بإرجاع القيمة التي يتم حفظها في ملفات تعريف الارتباط المستخدمة من قبل البرمجية-خلف لضبط الوقت القيم بين بتوقيت غرينتش بالتوقيت المحلي.الشيء الجميل هو أن المستخدم لا تحتاج إلى تحديد المنطقة الزمنية (رمز يفعل ذلك تلقائيا).هناك المزيد من المشاركة (هذا هو السبب في أنني رابط المقالة) ، ولكن بشرط كود يجعل من السهل حقا لاستخدامه.وأظن أنه يمكنك تحويل المنطق PHP وغيرها من اللغات (طالما أنك تفهم ASP.NET).

أنها بسيطة مع جافا سكريبت و PHP:

على الرغم من أن المستخدم يمكن أن تعبث مع له/لها على مدار الساعة الداخلية و/أو التوقيت ، فإن أفضل طريقة وجدتها حتى الآن إلى الحصول على تعويض ، يبقى new Date().getTimezoneOffset();.ومن غير الغازية, لا تعطي الرأس-آلام و يلغي الحاجة إلى الاعتماد على أطراف ثالثة.

يقول علي الطاولة ، users, أن يحتوي على حقل date_created int(13), لتخزين Unix الطوابع;

على افتراض أن العميل creates a new account, البيانات الواردة من قبل post, و أريد أن insert/update على date_created column مع عميل Unix timestamp ، وليس على الملقم.

منذ timezoneOffset هو مطلوب في وقت إدراج/تحديث ، فإنه يتم تمرير إضافية $_POST عنصر عند تقدم العميل النموذج ، وبالتالي القضاء على الحاجة إلى تخزينها في دورات و/أو ملفات تعريف الارتباط ، أي ملقم إضافية يضرب أيضا.

var off = (-new Date().getTimezoneOffset()/60).toString();//note the '-' in front which makes it return positive for negative offsets and negative for positive offsets
var tzo = off == '0' ? 'GMT' : off.indexOf('-') > -1 ? 'GMT'+off : 'GMT+'+off;

أقول يتلقى الملقم tzo كما $_POST['tzo'];

$ts = new DateTime('now', new DateTimeZone($_POST['tzo']);
$user_time = $ts->format("F j, Y, g:i a");//will return the users current time in readable format, regardless of whether date_default_timezone() is set or not.
$user_timestamp = strtotime($user_time);

إدراج/تحديث date_created=$user_timestamp.

عند استرداد date_created ، يمكنك تحويل الزمني كما يلي:

$date_created = // Get from the database
$created = date("F j, Y, g:i a",$date_created); // Return it to the user or whatever

الآن هذا المثال قد تناسب احتياجات الفرد ، عندما يتعلق الأمر إلى إدخال first الطابع الزمني...عندما يتعلق الأمر إضافية زمني أو جدول قد ترغب في النظر في إدراج tzo قيمة في الجدول المستخدمين للرجوع إليها في المستقبل ، أو وضع أنها الدورة أو ملف تعريف الارتباط.

P. S.ولكن ما إذا كان المستخدم يسافر ومفاتيح المناطق الزمنية.سجلات في GMT+4, تنتقل بسرعة إلى GMT-1 و بتسجيل الدخول مرة أخرى.آخر مرة دخلت فيها سيكون في المستقبل.

أعتقد...نحن نفكر كثيرا.

يمكنك أن تفعل ذلك على العميل مع لحظة-التوقيت وإرسال قيمة الخادم ؛ نموذج الاستخدام:

> moment.tz.guess()
"America/Asuncion"

طريقة بسيطة للقيام بذلك هو عن طريق استخدام:

new Date().getTimezoneOffset();

الحصول على صالح TZ قاعدة بيانات التوقيت اسم في PHP هو عملية من خطوتين:

  1. مع جافا سكريبت ، على التوقيت التعويض في خلال دقائق getTimezoneOffset.هذه الإزاحة سوف تكون إيجابية إذا كان التوقيت المحلي وراء UTC سلبية إذا كان متقدما.لذلك يجب إضافة علامة المقابلة إلى تعويض.

    var timezone_offset_minutes = new Date().getTimezoneOffset();
    timezone_offset_minutes = timezone_offset_minutes == 0 ? 0 : -timezone_offset_minutes;
    

    تمر هذه الإزاحة إلى PHP.

  2. في PHP تحويل هذه الإزاحة في صالح التوقيت اسم timezone_name_from_abbr وظيفة.

    // Just an example.
    $timezone_offset_minutes = -360;  // $_GET['timezone_offset_minutes']
    
    // Convert minutes to seconds
    $timezone_name = timezone_name_from_abbr("", $timezone_offset_minutes*60, false);
    
    // America/Chicago
    echo $timezone_name;</code></pre>
    

لقد كتبت بلوق وظيفة على ذلك: كيفية الكشف عن المستخدم والوقت في PHP.كما أنه يحتوي على العرض.

خيار واحد ممكن استخدام Date رأس الحقل ، التي تم تعريفها في RFC 7231 ومن المفترض أن تشمل التوقيت.بالطبع أنها ليست مضمونة أن القيمة حقا العميل التوقيت ، ولكن يمكن أن يكون نقطة انطلاق مريحة.

هنا هو كيف نفعل ذلك.سيؤدي هذا إلى تعيين PHP المنطقة الزمنية الافتراضية للمستخدم التوقيت المحلي.فقط لصق التالية في أعلى جميع الصفحات الخاصة بك:

<?php
session_start();

if(!isset($_SESSION['timezone']))
{
    if(!isset($_REQUEST['offset']))
    {
    ?>
        <script>
        var d = new Date()
        var offset= -d.getTimezoneOffset()/60;
        location.href = "<?php echo $_SERVER['PHP_SELF']; ?>?offset="+offset;
        </script>
        <?php   
    }
    else
    {
        $zonelist = array('Kwajalein' => -12.00, 'Pacific/Midway' => -11.00, 'Pacific/Honolulu' => -10.00, 'America/Anchorage' => -9.00, 'America/Los_Angeles' => -8.00, 'America/Denver' => -7.00, 'America/Tegucigalpa' => -6.00, 'America/New_York' => -5.00, 'America/Caracas' => -4.30, 'America/Halifax' => -4.00, 'America/St_Johns' => -3.30, 'America/Argentina/Buenos_Aires' => -3.00, 'America/Sao_Paulo' => -3.00, 'Atlantic/South_Georgia' => -2.00, 'Atlantic/Azores' => -1.00, 'Europe/Dublin' => 0, 'Europe/Belgrade' => 1.00, 'Europe/Minsk' => 2.00, 'Asia/Kuwait' => 3.00, 'Asia/Tehran' => 3.30, 'Asia/Muscat' => 4.00, 'Asia/Yekaterinburg' => 5.00, 'Asia/Kolkata' => 5.30, 'Asia/Katmandu' => 5.45, 'Asia/Dhaka' => 6.00, 'Asia/Rangoon' => 6.30, 'Asia/Krasnoyarsk' => 7.00, 'Asia/Brunei' => 8.00, 'Asia/Seoul' => 9.00, 'Australia/Darwin' => 9.30, 'Australia/Canberra' => 10.00, 'Asia/Magadan' => 11.00, 'Pacific/Fiji' => 12.00, 'Pacific/Tongatapu' => 13.00);
        $index = array_keys($zonelist, $_REQUEST['offset']);
        $_SESSION['timezone'] = $index[0];
    }
}

date_default_timezone_set($_SESSION['timezone']);

//rest of your code goes here
?>

جرب هذا رمز PHP:

<?php
    $ip = $_SERVER['REMOTE_ADDR'];
    $json = file_get_contents("http://api.easyjquery.com/ips/?ip=" . $ip . "&full=true");
    $json = json_decode($json,true);
    $timezone = $json['LocalTimeZone'];
?>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top