سؤال

أنا بحاجة إلى تخزين التوقيت الصيفي (التوقيت الصيفي) تغيير قواعد مختلف مناطق العالم في قاعدة البيانات الخاصة بنا.أنا بالفعل وسيلة تخزين المناطق والمناطق الفرعية (لذلك كله "نصف أستراليا"/أريزونا/النافاهو المشكلة هو الاعتناء بها) ولكن أنا أتساءل ماذا الأكثر كفاءة المخطط سيكون لإنجاز هذا.الخيارين كما أراها:

  • يكون الجدول الذي يحتوي فريدة من نوعها صف واحد لكل سنة و المنطقة وإعطاء بداية ونهاية أوقات الصيف وكذلك إزاحة محددة
  • يكون الجدول الذي يخزن صيغة فعالة النطاق الزمني لكل منطقة (المدى الفعال المطلوب مناطق مثل إسرائيل)

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

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

هل لدى أي شخص أي تجربة القيام بشيء مماثل ؟ وبالمثل, لا أحد لديه أي الرائعة الخيارات التي كنت قد غاب ؟

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

المحلول

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

هذا هو السبب في كل OS البائعين طرح التوقيت تغييرات الملف مرة أو مرتين في السنة -- لديهم ، لأنها لا تولد دقيقة 100% ملف برمجيا.

نصائح أخرى

إذا كان التوقيت الصيفي القواعد يجب أن تكون في قاعدة البيانات ، ربما تختار التحديث تلقائيا من خارجي مصدر موثوق (مكتبة الموقع, أيا كان).يدويا الحفاظ على قواعد التوقيت الصيفي لا يبدو مثل الكثير من المرح.

واحدة من أفضل مصادر المعلومات عن المنطقة الزمنية القواعد هو أولسون قاعدة البيانات التي كانت متاحة من elsie.nci.nih.gov.في أيلول / سبتمبر 2008 في النسخة الحالية من البيانات tzdata2008f.tar.gz, النسخة الحالية من القانون tzcode2008e.tar.gz (ونعم ، كما أصدرت دائما عندما كانت البيانات).هذا يميل إلى أن يكون مصدر المعلومات بالنسبة للعديد من الأنظمة الأخرى (بما في ذلك ، على وجه الخصوص ، أوراكل المعلومات).هناك قائمة بريدية المتاحة أيضا.كما ترون, هناك ستة إصدارات من البيانات حتى الآن في عام 2008 ؛ لدي نسخة من 2005 ، 2006l, 2007k الكامنة على الجهاز الخاص بي ، لذا فإن الأمور يمكن أن تتغير بل في كثير من الأحيان.

في الوقت الحاضر (آذار / مارس 2017) ، أولسون قاعدة البيانات المتاحة من IANA — انظر https://iana.org/time-zones و ftp://ftp.iana.org/tz (خاصة ftp://ftp.iana.org/tz/releases).

هناك أيضا لغة مشتركة مستودع البيانات CLDR الذي يحتوي على معلومات حول المناطق الزمنية أيضا.

أوراكل قاعدة البيانات تلقائيا يعالج هذا بالنسبة لك.تاريخ المخزنة في تمثيل داخلية (يتيح تخيل UMT أجل حجة) و هو مهيأ وفقا لقواعد التوقيت عند تحويلها إلى سلسلة.

هذا أيضا لا يحل الجدل حول ما يجب القيام به خلال تغيير مع مرور الوقت.I. E.عند لفة عقارب الساعة إلى الوراء 1/2 ساعة هناك في الواقع 2 حالات 3:25 صباحا في نفس اليوم.

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