خدمة الويب - المنطقة الزمنية الحالية للمدينة؟

StackOverflow https://stackoverflow.com/questions/55901

  •  09-06-2019
  •  | 
  •  

سؤال

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

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

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

المحلول

يوفر موقع Earthtools.org خدمة ويب مجانية للحصول على المنطقة الزمنية من مدينة ما هنا:

http://www.earthtools.org/webservices.htm#timezone

ما عليك سوى تمرير القيم الطويلة/خطوط العرض مثل هذا:(هذا لنيويورك)

http://www.earthtools.org/timezone-1.1/40.71417/-74.00639


يحرر:

يبدو أن أدوات الأرض قد تم إغلاقها.البديل الجيد (الذي لم يكن موجودًا في عام 2008 عندما تمت الإجابة على هذا السؤال) هو Google Time Zone API.لاستخدامه يجب عليك أولا قم بتنشيط واجهة برمجة تطبيقات المنطقة الزمنية على حسابك.إنه مجاني إذا بقيت دون هذه الحدود:

  • 2500 طلب خلال 24 ساعة.
  • 5 طلبات في الثانية

وثائق متاح على مطوري جوجل.

نصائح أخرى

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

على سبيل المثال، للحصول على المنطقة الزمنية والإزاحة لسان فرانسيسكو:

1) تحويل المدينة إلى موقع مرمز جغرافيًا:

http://maps.googleapis.com/maps/api/geocode/json?address=San%20Francisco,+CA&sensor=false

الموقع المرمز جغرافيًا موجود في بيانات إرجاع JSON:

"location": {
    "lat":  37.77492950,
    "lng": -122.41941550
}

2) تحويل الموقع المرمز جغرافيًا إلى منطقة زمنية محلية والإزاحة، إن وجدت:

https://maps.googleapis.com/maps/api/timezone/json?location=37.77492950,-122.41941550&timestamp=1331161200&sensor=false

الذي يقوم بإرجاع معلومات المنطقة الزمنية الحالية:

{
          "status": "OK",
       "dstOffset":  0.0,
       "rawOffset": -28800.0,              
      "timeZoneId": "America/Los_Angeles",
    "timeZoneName": "Pacific Standard Time"
}

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

يحتوي موقع Geonames.org على مجموعة رائعة من البيانات العالمية المتوفرة عبر خدمة الويب أو التنزيل:

http://www.geonames.org/export/ws-overview.html

بخاصة

http://www.geonames.org/export/web-services.html#timezone

.

معلومات المنطقة الزمنية لـ Earthtool ليست محدثة ...على سبيل المثال، الإزاحة الحالية لسري لانكا هي +5.5 من توقيت جرينتش، لكن EarthTools تظهر على أنها +6 والتي كانت الإزاحة القديمة قبل عام 2005.

أقترح GeoNames.org.

WorldTimeServer.com يحتوي على ما يبدو أنه قاعدة بيانات شاملة للمنطقة الزمنية، والتي يمكنك شراء حق الوصول إليها بتنسيقات متنوعة، بما في ذلك مكون .NET لاستخدام الويب.

لا يوجد أي صلة، فقط كان علي أن أبحث عن نفس الشيء بنفسي مؤخرًا.

مكتبة بسيطة غير متصلة بالإنترنت: المناطق الزمنية

للعثور على المنطقة الزمنية لموقع ما، يمكنك استخدامه مثل واجهة برمجة تطبيقات المنطقة الزمنية لـ Google Maps API.لسوء الحظ، يتطلب هذا منك الاستعلام عن خدمة عن بعد وأنت خاضع لحدودها.

إليك مكتبة مدمجة تسمى Alterplay المناطق الزمنية(Git مرفق) الذي يسمح لك باستخراج NSTimeZone من موقع معين دون الحاجة إلى الاتصال بخدمة بعيدة. المناطق الزمنية يعمل عن طريق الاستعلام عن قائمة محلية للمناطق الزمنية (المضمنة في المكتبة).

في حالة أن أي شخص يجب أن يصطدم بهذا السؤال.

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

  • أو يمكنك استخدام واجهة برمجة التطبيقات مثل timezoneapi.io (أنا وراء ذلك) والتي تمكنك من البحث عن عنوان/مدينة/بلد.تقوم بإرجاع العنوان ومعلومات المنطقة الزمنية والتاريخ/الوقت الحالي لتلك المنطقة الزمنية المحددة.

https://timezoneapi.io/developers/address

لقد وجدت قاعدة بيانات مجانية للتحميل هنا: http://citytimezones.info/

يحرر] ...ولكن يمكن العثور على معلومات أكثر دقة (بما في ذلك المصادر) بناءً على قاعدة بيانات Olson هنا: http://en.wikipedia.org/wiki/Tz_database

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

لدى Google خدمتها الخاصة، وهي موثوقة للغاية وسهلة الاستخدام، وتقوم بإخراج المعلومات بتنسيق JSON.حتى أنه يسمح بتحديد وقت مخصص، على سبيل المثال، احصل على المنطقة الزمنية في 02/02/2013 في مالطا.

https://developers.google.com/maps/documentation/timezone/

جوجل 2500 طلب مجاني يومياhttps://developers.google.com/maps/documentation/timezone/

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