حساب فرق الساعات الموقّع بين إزاحات UTC
تحسب هذه الأداة فرق الساعات الموقّع بين سلسلتين تمثلان إزاحتين ثابتتين عن UTC. أدخلوا الإزاحة الأولى ثم الثانية، فتطرح الأداة الأولى من الثانية من دون الرجوع إلى ساعة أو موقع أو قاعدة للتوقيت الصيفي أو قاعدة بيانات للمناطق الزمنية.
شغّل الأداة مجانًا
تكون النتيجة موجبة عندما تسبق الإزاحة الثانية الأولى، وسالبة عندما تتأخر عنها، وصفراً عندما تمثلان البعد نفسه عن UTC. وتعيد الأداة أيضاً الفرق الدقيق بالدقائق لتسهيل أي حسابات لاحقة.
فهم اتجاه النتيجة الموقّعة
يتبع الحساب ترتيباً صريحاً: الإزاحة الثانية ناقص الإزاحة الأولى. إذا كانت الإزاحة A هي UTC+02:00 والإزاحة B هي UTC+05:30، فالنتيجة +3.5 ساعات، لأن B أبعد شرقاً عن UTC من A بثلاث ساعات وثلاثين دقيقة. وعند عكس المدخلين تصبح النتيجة -3.5 ساعات. تفيد هذه الإشارة عندما يحتاج برنامج إلى تعديل وقت ساعة من الإزاحة الثابتة الأولى نحو الثانية، لكن هذه القدرة لا تستقبل تاريخاً أو وقتاً ولا تحوّلهما، بل تعرض فرق الإزاحتين فقط. تعني النتيجة الصفرية أن السلسلتين تصفان البعد نفسه عن UTC، حتى إن استعملت إحداهما UTC والأخرى Z. تتضمن الاستجابة النسختين الموحّدتين من المدخلين، وقيمة عشرية بالساعات، وقيمة صحيحة بالدقائق. تمنع قيمة الدقائق الالتباس عند وجود نصف ساعة أو ربع ساعة أو أي مكوّن دقائق صحيح آخر، بينما توفر قيمة الساعات الجواب المباشر الذي يحتاج إليه معظم المستخدمين.
إدخال إزاحات UTC الثابتة بصيغة دقيقة
استخدموا UTC متبوعاً بإشارة ورقمين للساعة ونقطتين رأسيتين ورقمين للدقائق، مثل UTC+05:30 أو UTC-04:00. ويمكن حذف بادئة UTC وإرسال +05:30 أو -04:00. وتُقبل UTC وZ للدلالة على الصفر. تُهمل المسافات حول السلسلة كلها، لكن المسافات داخل الإزاحة تُرفض حتى لا يُعاد تفسير مدخل غير صحيح بصمت. يجب أن تبقى الساعات ضمن النطاق المدني للإزاحات الثابتة، من سالب أربع عشرة ساعة إلى موجب أربع عشرة ساعة. عند حدي الأربع عشرة ساعة يجب أن تكون الدقائق 00، وفي الحالات الأخرى يجب أن تقع بين 00 و59. إن اشتراط الإشارة والنقطتين يجعل المدخل قابلاً للمراجعة ويمنع الخلط بين +530 و+05:30. تُوحّد الإزاحات الناتجة إلى صيغة UTC±HH:MM، ولذلك تنتج الصيغ المتكافئة شكلاً ثابتاً. وتعيد القيم غير الصحيحة خطأ إدخال يحدد الحقل المطلوب تصحيحه بدلاً من تخمين النتيجة.
معرفة ما توضحه الإزاحة الثابتة وما لا توضحه
الإزاحة الثابتة عن UTC فرق عددي وليست منطقة زمنية جغرافية. وهذا التمييز مهم لأن الأماكن قد تغيّر إزاحتها بسبب التوقيت الصيفي أو القرارات الحكومية أو القواعد التاريخية. فقد تستخدم مدينة إزاحة في الشتاء وأخرى في الصيف، بينما لا تحتوي سلسلة الإزاحة وحدها على موقع أو تاريخ لاختيار القاعدة المناسبة. لذلك لا تجري هذه القدرة بحثاً في المناطق الزمنية ولا تدّعي معرفة الوقت المحلي الحالي في مكان مسمى. وهذا النطاق المحدد هو ما يجعل الإجابة حتمية: تعطي السلاسل المتطابقة دائماً المخرجات نفسها بغض النظر عن مكان الطلب أو وقته. استخدموها للتحقق من الإعدادات، أو مقارنة إزاحات اختارها نظام آخر، أو إعداد حسابات الجداول عندما تكون الإزاحات معروفة، أو اختبار عمليات التكامل التي تتبادل إزاحات عددية. وإذا بدأت المسألة بمناطق مسماة مثل Europe/London أو America/New_York، فاستخرجوا إزاحتها الثابتة للحظة المطلوبة أولاً ثم مرروا الناتج هنا.
حالات الاستخدام
مقارنة إزاحات الخدمات المضبوطة
تحققوا من فرق الساعات الموقّع بين نظامين تكون إزاحتاهما الثابتتان عن UTC معروفتين مسبقاً.
مراجعة حسابات الجداول
احصلوا على مقدار التعديل اللازم لنقل وقت الساعة من الإزاحة الأولى نحو الثانية.
اختبار تكاملات الإزاحة
استخدموا الإزاحات الموحّدة وفرق الدقائق الدقيق كبيانات ثابتة لاختبار API والنماذج ومسارات المعالجة.
الأسئلة الشائعة
كيف تُحدد إشارة النتيجة؟
تطرح الأداة offset_a من offset_b. تعني النتيجة الموجبة أن الثانية تسبق الأولى، وتعني السالبة أنها تتأخر عنها.
هل يراعي الحساب التوقيت الصيفي؟
لا. فهو يقارن إزاحات عددية ثابتة فقط، ولا يستخدم تواريخ أو مواقع أو قواعد مناطق زمنية.
ما صيغ الإدخال المقبولة؟
استخدموا UTC±HH:MM أو ±HH:MM. وتُقبل UTC وZ أيضاً للإزاحة الصفرية.
هل تدعم الأداة إزاحات نصف الساعة وربع الساعة؟
نعم. يُقبل أي مكوّن دقائق صحيح من 00 إلى 59 ضمن النطاق الكلي ±14:00.
لماذا تُعاد difference_minutes؟
تحافظ الدقائق الصحيحة على دقة الحساب وتسهّل العمليات اللاحقة عندما يكون فرق الساعات كسرياً.
ما تكلفة طلب API؟
تكلفة كل طلب API هي $0.002؛ ويمكن تشغيل إصدار المتصفح محلياً من دون الرجوع إلى خدمات خارجية.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/date/offset-difference-hours \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"offset_a":"UTC+05:30","offset_b":"UTC-04:00"}'const res = await fetch("https://api.kit.forhosting.com/date/offset-difference-hours", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"offset_a": "UTC+05:30",
"offset_b": "UTC-04:00"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/offset-difference-hours",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"offset_a": "UTC+05:30",
"offset_b": "UTC-04:00"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/offset-difference-hours", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"offset_a":"UTC+05:30","offset_b":"UTC-04:00"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"offset_a":"UTC+05:30","offset_b":"UTC-04:00"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/offset-difference-hours", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"offset_a": "UTC+05:30",
"offset_b": "UTC-04:00"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.offset_difference_hours",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |