وقت

د پروګرامرانو لپاره

ستاسو د پروګرام لپاره د افغانستان نېټه او وخت

لمریزه او سپوږمیزه کلیزه، د میاشتو نومونه په اوو ژبو، او د هر ولایت په مرکز کې لمر ختل او لوېدل: څو ساده فایلونه او یو JavaScript ماډیول. نه کیلي غواړي، نه نوم لیکنه.

نسخه ۱JSON او JavaScriptبېلګې په JavaScript او PHP

په دې پاڼه کې

په لنډه توګهټول فایلونه په waqt.qudqu.com/api/v1/ کې دي او له هرې ویب‌پاڼې پرانیستل کېږي. هر فایل له هماغه کوډ جوړېږي چې دا سایټ یې کاروي، نو API او سایټ هېڅکله دوه بېلې نېټې نه ورکوي. په هېڅ یوه کې د ایراني میاشتې نوم نشته.

چټک پیل

په یوه <script type="module"> کې یو import بس دی: نه نصبول، نه کیلي، نه نوم لیکنه. دا کوډ همدا اوس ستاسو په براوزر کې اجرا شو؛ د نن ځواب د هرې کرښې لاندې دی.

quick-start.htmlHTML
همدا اوس اجرا شو
<script type="module">
	import { Calendar, Language, formatDate, wallTime }
		from 'https://waqt.qudqu.com/api/v1/waqt.js';

	// Today on Afghan time, as a day number
	const today = wallTime(Date.now()).day;

	console.log(formatDate(today, Calendar.SHAMSI, Language.DARI).text);
	// → …
	console.log(formatDate(today, Calendar.QAMARI, Language.PASHTO).text);
	// → …
	console.log(formatDate(today, Calendar.GREGORIAN, Language.ENGLISH).text);
	// → …
</script>

فایلونه

فایلڅه لريکچه
calendar.jsonد لمریزو او سپوږمیزو کلونو جدولونه، د ورځې شمېره څه ده، د افغانستان وخت۳ کیلوبایټ
names.jsonد درېیو کلیزو میاشتې، د اونۍ ورځې او عددونه، په اوو ژبو۳ کیلوبایټ
places.jsonد ۳۴ ولایتونو مرکزونه: جغرافیایي موقعیت، د ښار او ولایت نومونه په اوو ژبو۴ کیلوبایټ
sun/kabul.jsonد لمریز کال په هره ورځ لمر؛ د هر ولایتي مرکز لپاره یو فایل۴ کیلوبایټ
waqt.jsJavaScript ماډیول: د نېټو اړول او لیکل، د افغانستان وخت، لمر او سپوږمۍ۲۰ کیلوبایټ
کچې فشرده (gzip) دي، لکه څنګه چې براوزر یې ترلاسه کوي. هر JSON فایل په خپل description کې وايي چې څنګه ولوستل شي.

د ورځې په شمېره د نېټې اړول

هره نېټه د ورځې شمېره لري: د ۱۹۷۰ کال د جنوري له لومړۍ نېټې راهیسې د ورځو شمېر. درې واړه کلیزې د ورځې شمېرې ته او له هغې اړول کېږي، نو یوه نېټه د خپلې ورځې د شمېرې له لارې له یوې کلیزې بلې ته ځي.

ماډیول دا کار په یوه فنکشن کوي. له ماډیول پرته هم اسانه دی: په calendar.json کې هغه وروستی کال ومومئ چې په هماغه ورځ یا له هغې مخکې پیلېږي، بیا میاشتې وشمېرئ.

import {
	Calendar, Digits, HijriAdjustment, Language,
	formatDate, fromGregorian, fromShamsi,
	toGregorian, toQamari, toShamsi, wallTime
} from 'https://waqt.qudqu.com/api/v1/waqt.js';

// A date is a day number: whole days since 1 January 1970
const nowruz = fromGregorian(2026, 3, 21);
console.log(nowruz);
// → 20533
console.log(toShamsi(nowruz));
// → { year: 1405, month: 1, day: 1 }
console.log(toQamari(nowruz));
// → { year: 1447, month: 10, day: 2 }
console.log(toGregorian(fromShamsi(1404, 12, 29)));
// → { year: 2026, month: 3, day: 20 }

// If the month began a day later in Afghanistan than in Umm al-Qura
console.log(toQamari(nowruz, HijriAdjustment.DAY_LATER));
// → { year: 1447, month: 10, day: 1 }

// As text, in any of the seven languages
console.log(formatDate(nowruz, Calendar.SHAMSI, Language.DARI).text);
// → ۱ حمل ۱۴۰۵
console.log(formatDate(nowruz, Calendar.SHAMSI, Language.PASHTO).text);
// → ۱ وری ۱۴۰۵
console.log(formatDate(nowruz, Calendar.QAMARI, Language.ENGLISH).text);
// → 2 Shawwal 1447

// With the weekday, in Latin digits
const options = { weekday: true, digits: Digits.LATIN };
console.log(formatDate(nowruz, Calendar.SHAMSI, Language.DARI, options).text);
// → شنبه، 1 حمل 1405

// Today, on Afghan time
const today = wallTime(Date.now()).day;
console.log(formatDate(today, Calendar.QAMARI, Language.DARI).text);

سپوږمیزه نېټه او د میاشتې لیدل

سپوږمیز جدول د ام‌القری کلیزه ده. په افغانستان کې سپوږمیزه میاشت د نوي هلال په لیدو پیلېږي، او دا مخکې نه شي حسابېدای: نېټه کله کله له جدول سره یوه ورځ توپیر لري. که میاشت له جدول یوه ورځ وروسته پیل شوه، جدول په تېره ورځ ولولئ (د ورځې شمېره منفي ۱)؛ که یوه ورځ مخکې، په راتلونکې ورځ. د ماډیول فنکشنونه همدا د HijriAdjustment.DAY_LATER یا HijriAdjustment.DAY_EARLIER په بڼه اخلي.

په اوو ژبو د میاشتو او ورځو نومونه

names.json د هرې ژبې لپاره د درېیو کلیزو میاشتې، د اونۍ ورځې له شنبې پیل، «غرمې مخکې» او «غرمې وروسته»، د کلیزو نومونه او د هغې ژبې عددونه لري. پښتو د میاشتو خپل نومونه لري؛ نورې ژبې دري نومونه په خپل لیک لیکي.

په دې فایلونو کې د ایراني میاشتې نوم نشته، او زموږ ازموینې هره ورځ په هره ژبه کې ګوري. نومونه له دې فایل څخه واخلئ، نه له براوزر: ډېر براوزرونه د افغانستان لپاره ایراني نومونه ښيي.

names.jsonJSON
{
  "languages": {
    "fa": {
      "months": {
        "shamsi": [
          "حمل", "ثور", "جوزا", "سرطان", "اسد", "سنبله",
          "میزان", "عقرب", "قوس", "جدی", "دلو", "حوت"
        ],
        "qamari": ["محرم", …],
        "gregorian": ["جنوری", …]
      },
      "weekdays": [
        "شنبه", "یکشنبه", "دوشنبه", "سه‌شنبه",
        "چهارشنبه", "پنجشنبه", "جمعه"
      ],
      "digits": "۰۱۲۳۴۵۶۷۸۹",
      …
    },
    "ps": {
      "months": {
        "shamsi": [
          "وری", "غویی", "غبرګولی", "چنګاښ", "زمری", "وږی",
          "تله", "لړم", "لیندۍ", "مرغومی", "سلواغه", "کب"
        ],
        "qamari": ["محرم", …],
        "gregorian": ["جنوري", …]
      },
      "weekdays": [
        "شنبه", "یکشنبه", "دوشنبه", "سه شنبه",
        "چهارشنبه", "پنجشنبه", "جمعه"
      ],
      "digits": "۰۱۲۳۴۵۶۷۸۹",
      …
    },
    "en": { "months": { "shamsi": ["Hamal", "Sawr", "Jawza", …] }, … },
    …
  }
}

لمر ختل او لوېدل

د هر ولایت د مرکز لپاره یو جدول شته: سپېده، لمر ختل، غرمه، لمر لوېدل، تیاره او د ورځې اوږدوالی، د لمریز کال د هرې ورځې لپاره، د افغانستان په وخت. جدول د هر کال لپاره له ۲ دقیقو کم توپیر سره سم دی، ځکه لمریز کال له لمر سره ځي.

د یوه ټاکلي کال د سمې دقیقې لپاره، یا د بل هر ځای لپاره، sunDay فنکشن وکاروئ. د هغه فورمول دلته په PHP هم شته.

// A sun table needs no code: months[m - 1][d - 1] is Shamsi month m, day d
const url = 'https://waqt.qudqu.com/api/v1/sun/herat.json';
const table = await (await fetch(url)).json();
console.log(table.columns);
// → [ 'firstLight', 'sunrise', 'noon', 'sunset', 'dark', 'dayLength' ]
console.log(table.months[0][0]); // 1 Hamal
// → [ '05:30', '06:25', '12:29', '18:33', '19:27', '12:08' ]

سپوږمۍ

ماډیول له هر ځای څخه په اسمان کې د سپوږمۍ ځای، د هغې روښانه برخه، په هره ورځ د هغې ختل او لوېدل، او د راتلونکې نوې او بشپړې سپوږمۍ وخت ورکوي. د میاشتې د لومړي هلال د لیدو لپاره نه دی.

moon.jsJavaScript
import {
	MoonPhase, moonState, nextMoonPhase
} from 'https://waqt.qudqu.com/api/v1/waqt.js';

// The moon over Kabul on an evening (or moonState(ms, latitude, longitude))
const evening = Date.parse('2026-03-21T19:00:00+04:30');
const moon = moonState(evening);

// Percent lit, and days since the new moon
console.log(Math.round(moon.lit * 100), moon.age.toFixed(1));
// → 9 2.8

const full = nextMoonPhase(evening, MoonPhase.FULL);
console.log(new Date(full).toISOString().slice(0, 16));
// → 2026-04-02T02:14

نسخه ۱: هغه څه چې نه بدلېږي

  • د فایلونو بڼه ثابته ده. کېدای شي څه ورته ور زیات شي، خو هېڅ نوم نه لرې کېږي او نه بدلېږي. هغه بدلون چې له دې قاعدې سره سم نه وي، /api/v2/ کېږي او نسخه ۱ پاتې کېږي.
  • د ۱۹۰۰ کال د جنوري له ۱ څخه د ۲۱۷۴ کال د نومبر تر ۲۵ (لمریز ۱۲۷۸ تر ۱۵۵۳، سپوږمیز ۱۳۱۷ تر ۱۶۰۰). له دې بهر فنکشنونه تېروتنه ورکوي.
  • له هرې ویب‌پاڼې. فایلونه د Access-Control-Allow-Origin: * سره لېږل کېږي، او براوزرونه یې ۱۰ دقیقې ساتي.
  • احصایه او کوکي نشته. فایلونه کوکي نه ږدي او احصایه نه راټولوي.

د کارونې شرایط

جواز: CC BY 4.0

کومه تېروتنه مو ولیده، یا څه کم دي؟ موږ ته ولیکئ.