سؤال

تقطير هذا المشروع إلى أبسط المصطلحات؛

  1. ينقر المستخدمون على زر، يتم إجراء سجل مع طابع زمني الآن ().
  2. الآن () بالطبع يساوي الوقت على خادم إنشاء التسجيل.
  3. أحتاج إلى إظهار إحصائياتها بناء على تطللك، وليس لي.

ما هي أفضل طريقة للوقاحة مع إزاحة المنطقة الزمنية في MySQL؟ هل هناك تنسيق حقل معين مصمم للتعامل مع إزاحة؟

سأحتاج إلى تشغيل الأشياء على غرار:

   SELECT DATE_FORMAT(b_stamp, '%W') AS week_day, count(*) AS b_total, b_stamp
      FROM table
      WHERE
   (b_stamp >= DATE_SUB(NOW(), INTERVAL 7 DAY))
      AND
   (user_id = '$user_id') GROUP BY week_day ORDER BY b_stamp DESC

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

أنا أفكر في أفضل طريقة قد تكون لتحديد إزاحةها، وتعيين متغير إلى "server_time" +/- الخاص بهم. هذا يجعلها تظهر كما لو أن الخادم موجود في موقع مختلف. أعتقد أن هذا سيكون من الأفضل، لأنه لن يكون هناك منطق إضافي +/- أحتاج إلى إضافته إلى التعليمات البرمجية، مما أقضيه وجعلها قبيحة.

من ناحية أخرى، يضع البيانات في قاعدة البيانات مع الطوابع الزمنية الموجودة في جميع أنحاء اللوحة.

اقتراحات؟

هل كانت مفيدة؟

المحلول

بخلاف استخدام JS، يمكنك الحصول على المنطقة الزمنية لعنوان IP (باستخدام شيء مثل IP2 الموقع)، ثم استخدم وظيفة Convert_TZ () MySQL ().

نصائح أخرى

يمكنك استخدام JavaScript للحصول على TimeZone من العميل كما يلي:

var timezone = (تاريخ جديد (). gettimezoneoffset () / 60) * (- 1)؛

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top