PHPackages                             wizardlabz/kiahk - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. wizardlabz/kiahk

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

wizardlabz/kiahk
================

Coptic calendar arithmetic — date conversion, Easter, and feast days. PHP port of kiahk.

v0.1.5(2mo ago)100MITPHP &gt;=8.1

Since May 24Compare

[ Source](https://github.com/amir-magdy-of-wizardlabz/kiahk)[ Packagist](https://packagist.org/packages/wizardlabz/kiahk)[ Docs](https://github.com/amir-magdy-of-wizardlabz/kiahk)[ RSS](/packages/wizardlabz-kiahk/feed)WikiDiscussions Synced 3w ago

READMEChangelog (3)Dependencies (1)Versions (5)Used By (0)

 [![Kiahk logo](https://raw.githubusercontent.com/amir-magdy-of-wizardlabz/kiahk/master/assets/kiahk.png)](https://raw.githubusercontent.com/amir-magdy-of-wizardlabz/kiahk/master/assets/kiahk.png)

Kiahk
=====

[](#kiahk)

[![GitHub stars](https://camo.githubusercontent.com/e4cf89f90b96a3d1f6bd0b285437d7bcae593efdd13a4ab9bcfd4914ad182ac6/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f616d69722d6d616764792d6f662d77697a6172646c61627a2f6b6961686b3f7374796c653d666c6174266c6f676f3d676974687562)](https://github.com/amir-magdy-of-wizardlabz/kiahk/stargazers)[![GitHub contributors](https://camo.githubusercontent.com/2b64bef7d22dd1137c00d022717ea0b06ca261d982a2482f6712ded174fe4b7a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6e7472696275746f72732f616d69722d6d616764792d6f662d77697a6172646c61627a2f6b6961686b2e737667)](https://github.com/amir-magdy-of-wizardlabz/kiahk/graphs/contributors)[![GitHub issues](https://camo.githubusercontent.com/4fa8a3a64c03b8eb66df90f4c07f618762a5a1c329545debc3ecc46448f8c1b1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f616d69722d6d616764792d6f662d77697a6172646c61627a2f6b6961686b2e737667)](https://github.com/amir-magdy-of-wizardlabz/kiahk/issues)[![GitHub last commit](https://camo.githubusercontent.com/2b7b1bd3b36b78eb42eedd51d600cbd05609633a267329c18474b5767f4c6902/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f616d69722d6d616764792d6f662d77697a6172646c61627a2f6b6961686b2e737667)](https://github.com/amir-magdy-of-wizardlabz/kiahk/commits/master)[![License: MIT](https://camo.githubusercontent.com/8429f1e329bcde04017da0295e44016c27d48e96d33f6a6653ac50169610bdec/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f616d69722d6d616764792d6f662d77697a6172646c61627a2f6b6961686b2e737667)](LICENSE)

Coptic calendar arithmetic — date conversion, Easter, and feast days. A small, exact library for the **Coptic Orthodox (Alexandrian) calendar**: convert between Gregorian and Coptic dates, compute Coptic Easter (Pascha) using the Julian computus, and look up the major fixed and moveable feasts of the Coptic Orthodox church year. Ported to **9 languages** from a single canonical spec in [`core/`](core/) — every port produces identical results against the shared test vectors.

**At a glance:** Anno Martyrum (AM) era · 13-month year (12×30 days + Nasie) · Julian-style leap rule (Y mod 4 == 3) · Coptic Easter via Meeus's compact Julian computus · English and Arabic month + feast names built in.

Package versions
----------------

[](#package-versions)

[![npm](https://camo.githubusercontent.com/2c6044a5a5e526515d3568a973dce5253a68a157ce7f544278c344f33f63e284/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f6b6961686b2e7376673f6c6162656c3d6e706d266c6f676f3d6e706d)](https://www.npmjs.com/package/kiahk)[![PyPI](https://camo.githubusercontent.com/71d1c8fb070fc03ae44709d39818ef2d8322046f7fdb9032b7dea7c269b46b53/68747470733a2f2f696d672e736869656c64732e696f2f707970692f762f6b6961686b2e7376673f6c6162656c3d50795049266c6f676f3d70797069266c6f676f436f6c6f723d7768697465)](https://pypi.org/project/kiahk/)[![Packagist](https://camo.githubusercontent.com/f9cdb037c3fbb4e647d92ad0ebbb3292baec00e602fcf6ae1d60f92117fa40cd/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f77697a6172646c61627a2f6b6961686b2e7376673f6c6162656c3d5061636b6167697374266c6f676f3d7061636b6167697374)](https://packagist.org/packages/wizardlabz/kiahk)[![Maven Central](https://camo.githubusercontent.com/493044b00bc53abd55a51ba4cbee865c2369c6df775bf48ac49748e16102a27a/68747470733a2f2f696d672e736869656c64732e696f2f6d6176656e2d63656e7472616c2f762f636f6d2e77697a6172646c61627a2f6b6961686b2e7376673f6c6162656c3d4d6176656e25323043656e7472616c266c6f676f3d6170616368656d6176656e)](https://central.sonatype.com/artifact/com.wizardlabz/kiahk)[![pub.dev](https://camo.githubusercontent.com/f129abbaaa1b0f53519a75379024af45ce8ab7b8c9aa0d2a91b2b633fdf3df61/68747470733a2f2f696d672e736869656c64732e696f2f7075622f762f6b6961686b2e7376673f6c6162656c3d7075622e646576266c6f676f3d64617274)](https://pub.dev/packages/kiahk)[![pkg.go.dev](https://camo.githubusercontent.com/f125e6c02ae751ad7215786cd06b6d6e218984763c3445c6625992f3ebaa3bb3/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f7461672f616d69722d6d616764792d6f662d77697a6172646c61627a2f6b6961686b3f66696c7465723d762a266c6162656c3d706b672e676f2e646576266c6f676f3d676f)](https://pkg.go.dev/github.com/amir-magdy-of-wizardlabz/kiahk/go)[![NuGet](https://camo.githubusercontent.com/e3deced4a31ba95684290e3a789b09ac82871a50efef7f92a3917e06bd92b9e1/68747470733a2f2f696d672e736869656c64732e696f2f6e756765742f762f4b6961686b2e7376673f6c6162656c3d4e75476574266c6f676f3d6e75676574)](https://www.nuget.org/packages/Kiahk/)[![CocoaPods](https://camo.githubusercontent.com/01f5e2b013cd8b3cd1eaf12e59656cfaad7b953e82d4458edd95395ea8668868/68747470733a2f2f696d672e736869656c64732e696f2f636f636f61706f64732f762f4b6961686b2e7376673f6c6162656c3d436f636f61506f6473266c6f676f3d636f636f61706f6473)](https://cocoapods.org/pods/Kiahk)[![SwiftPM](https://camo.githubusercontent.com/384a3d619dbeed8bfd0edf8e92e29d1fc88efa536296c119a335afaf69e5f24f/68747470733a2f2f696d672e736869656c64732e696f2f656e64706f696e743f75726c3d687474707325334125324625324673776966747061636b616765696e6465782e636f6d2532466170692532467061636b61676573253246616d69722d6d616764792d6f662d77697a6172646c61627a2532466b6961686b25324662616467652533467479706525334473776966742d76657273696f6e73266c6162656c3d5377696674504d266c6f676f3d7377696674)](https://swiftpackageindex.com/amir-magdy-of-wizardlabz/kiahk)[![C release](https://camo.githubusercontent.com/fc7d1933f293004d78f8216b9a806cac64ffb4a401b88a0679c2010621ccd310/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f616d69722d6d616764792d6f662d77697a6172646c61627a2f6b6961686b3f6c6162656c3d4325323074617262616c6c266c6f676f3d676974687562)](https://github.com/amir-magdy-of-wizardlabz/kiahk/releases/latest)

Downloads &amp; adoption [ℹ️](#registry-download-counts)
--------------------------------------------------------

[](#downloads--adoption-ℹ️)

[![npm downloads](https://camo.githubusercontent.com/b4ccda0fa47956a5dd9efd636ba377096b133663bc3da4b9348b0948dc2d36d8/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f6b6961686b2e7376673f6c6162656c3d6e706d2532302532466d6f266c6f676f3d6e706d)](https://npm-stat.com/charts.html?package=kiahk)[![PyPI downloads](https://camo.githubusercontent.com/25eead2999570b4bceeb7b31122e37de78f02e2fa5b7a5653fd0ec97a15af256/68747470733a2f2f7374617469632e706570792e746563682f62616467652f6b6961686b2f6d6f6e7468)](https://www.pepy.tech/projects/kiahk)[![Packagist downloads](https://camo.githubusercontent.com/4b035c8bacceb708c7cd1c9f03268c7948c83b97852058a8a19c217f81652daf/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f646d2f77697a6172646c61627a2f6b6961686b2e7376673f6c6162656c3d7061636b61676973742532302532466d6f266c6f676f3d7061636b6167697374)](https://packagist.org/packages/wizardlabz/kiahk/stats)[![NuGet downloads](https://camo.githubusercontent.com/33649e7b24f4897a483057b832610c28a30d63cfe93d5b3bf8f1beae3bceca6b/68747470733a2f2f696d672e736869656c64732e696f2f6e756765742f64742f4b6961686b2e7376673f6c6162656c3d6e75676574253230746f74616c266c6f676f3d6e75676574)](https://www.nuget.org/packages/Kiahk/)[![pub points](https://camo.githubusercontent.com/bc382b5928efb5a8b6ec888a819b256581f43d1dd573e5c74abad5696dd81606/68747470733a2f2f696d672e736869656c64732e696f2f7075622f706f696e74732f6b6961686b3f6c6162656c3d7075622e64657625323073636f7265266c6f676f3d64617274)](https://pub.dev/packages/kiahk/score)[![GitHub release downloads](https://camo.githubusercontent.com/63436e970fbefccbcb3ab999fa87cbb7364d9a400cdc8e15b1e8fc0d82293611/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f616d69722d6d616764792d6f662d77697a6172646c61627a2f6b6961686b2f746f74616c2e7376673f6c6162656c3d4325323074617262616c6c253230444c266c6f676f3d676974687562)](https://github.com/amir-magdy-of-wizardlabz/kiahk/releases)[![GitHub forks](https://camo.githubusercontent.com/b5f1ff7b94c9d707110a989f56a881759abc52b2f3444ac3bf2b3bb511789539/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f616d69722d6d616764792d6f662d77697a6172646c61627a2f6b6961686b3f7374796c653d666c6174266c6f676f3d676974687562)](https://github.com/amir-magdy-of-wizardlabz/kiahk/network/members)[![Languages](https://camo.githubusercontent.com/b3ead1645d642998addfad6791e9f5355a26aa29635878253409b248cdcbf2bd/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c616e6775616765732f636f756e742f616d69722d6d616764792d6f662d77697a6172646c61627a2f6b6961686b3f6c6f676f3d676974687562)](https://github.com/amir-magdy-of-wizardlabz/kiahk)

Build status
------------

[](#build-status)

[![js tests](https://github.com/amir-magdy-of-wizardlabz/kiahk/actions/workflows/test-js.yml/badge.svg)](https://github.com/amir-magdy-of-wizardlabz/kiahk/actions/workflows/test-js.yml)[![py tests](https://github.com/amir-magdy-of-wizardlabz/kiahk/actions/workflows/test-py.yml/badge.svg)](https://github.com/amir-magdy-of-wizardlabz/kiahk/actions/workflows/test-py.yml)[![go tests](https://github.com/amir-magdy-of-wizardlabz/kiahk/actions/workflows/test-go.yml/badge.svg)](https://github.com/amir-magdy-of-wizardlabz/kiahk/actions/workflows/test-go.yml)[![dart tests](https://github.com/amir-magdy-of-wizardlabz/kiahk/actions/workflows/test-dart.yml/badge.svg)](https://github.com/amir-magdy-of-wizardlabz/kiahk/actions/workflows/test-dart.yml)[![swift tests](https://github.com/amir-magdy-of-wizardlabz/kiahk/actions/workflows/test-swift.yml/badge.svg)](https://github.com/amir-magdy-of-wizardlabz/kiahk/actions/workflows/test-swift.yml)[![csharp tests](https://github.com/amir-magdy-of-wizardlabz/kiahk/actions/workflows/test-csharp.yml/badge.svg)](https://github.com/amir-magdy-of-wizardlabz/kiahk/actions/workflows/test-csharp.yml)[![c tests](https://github.com/amir-magdy-of-wizardlabz/kiahk/actions/workflows/test-c.yml/badge.svg)](https://github.com/amir-magdy-of-wizardlabz/kiahk/actions/workflows/test-c.yml)[![php tests](https://github.com/amir-magdy-of-wizardlabz/kiahk/actions/workflows/test-php.yml/badge.svg)](https://github.com/amir-magdy-of-wizardlabz/kiahk/actions/workflows/test-php.yml)[![kotlin tests](https://github.com/amir-magdy-of-wizardlabz/kiahk/actions/workflows/test-kotlin.yml/badge.svg)](https://github.com/amir-magdy-of-wizardlabz/kiahk/actions/workflows/test-kotlin.yml)

Ports &amp; distributions
-------------------------

[](#ports--distributions)

Same algorithms, same `core/test-vectors.json` contract, distributed through each language's native package manager. Every port version is kept in lockstep — the version badges below should all read the same number.

LanguageSourcePackageInstallTypeScript / JavaScript[`js/`](js/)[![npm](https://camo.githubusercontent.com/23ef67ff3de2e3b858515e46d527360ab4b3f8fe086d7eb040eed46fb1af8920/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f6b6961686b2e7376673f6c6162656c3d6e706d)](https://www.npmjs.com/package/kiahk)`npm install kiahk`Python[`py/`](py/)[![PyPI](https://camo.githubusercontent.com/f376da2567724aec80b782d64da917266200bc89998c14a08c0462a9a18e8226/68747470733a2f2f696d672e736869656c64732e696f2f707970692f762f6b6961686b2e7376673f6c6162656c3d50795049)](https://pypi.org/project/kiahk/)`pip install kiahk`PHP[`php/`](php/)[![Packagist](https://camo.githubusercontent.com/da5296a337f726379a17fe0d1e56d823f1d0a7536fdebf465a72db81f801f510/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f77697a6172646c61627a2f6b6961686b2e7376673f6c6162656c3d5061636b6167697374)](https://packagist.org/packages/wizardlabz/kiahk)`composer require wizardlabz/kiahk`Go[`go/`](go/)[![pkg.go.dev](https://camo.githubusercontent.com/3eb53837f81e9200e0a98f5d59f7beb47ee7c0b97b99c6d84f7ed7deb4687f7f/68747470733a2f2f706b672e676f2e6465762f62616467652f6769746875622e636f6d2f616d69722d6d616764792d6f662d77697a6172646c61627a2f6b6961686b2f676f2e737667)](https://pkg.go.dev/github.com/amir-magdy-of-wizardlabz/kiahk/go)`go get github.com/amir-magdy-of-wizardlabz/kiahk/go`Dart / Flutter[`dart/`](dart/)[![pub.dev](https://camo.githubusercontent.com/7459f8f87718dbb612dc24a75d259cd28b43c1be2e1c91fecdde04ec9395d4c4/68747470733a2f2f696d672e736869656c64732e696f2f7075622f762f6b6961686b2e7376673f6c6162656c3d7075622e646576)](https://pub.dev/packages/kiahk)`dart pub add kiahk`Swift (SwiftPM)[`swift/`](swift/)[![SwiftPM](https://camo.githubusercontent.com/8ca3d48598f4bed3000fdafe127df68b6e6d646e1de9a998cd4ea56d9f44d279/68747470733a2f2f696d672e736869656c64732e696f2f656e64706f696e743f75726c3d687474707325334125324625324673776966747061636b616765696e6465782e636f6d2532466170692532467061636b61676573253246616d69722d6d616764792d6f662d77697a6172646c61627a2532466b6961686b25324662616467652533467479706525334473776966742d76657273696f6e73)](https://swiftpackageindex.com/amir-magdy-of-wizardlabz/kiahk)add `https://github.com/amir-magdy-of-wizardlabz/kiahk.git` to `Package.swift`Swift (CocoaPods)[`swift/`](swift/)[![CocoaPods](https://camo.githubusercontent.com/a67e865621e82d3029bf2ee3437bd322dec6889aa37f11609a788fc2e1baaab9/68747470733a2f2f696d672e736869656c64732e696f2f636f636f61706f64732f762f4b6961686b2e7376673f6c6162656c3d436f636f61506f6473)](https://cocoapods.org/pods/Kiahk)`pod 'Kiahk'` in `Podfile`C# / .NET[`csharp/`](csharp/)[![NuGet](https://camo.githubusercontent.com/fda94eaaa23a0a7eb3134b1d129652e92adaf209c6b5266c53ebc8b7236c2706/68747470733a2f2f696d672e736869656c64732e696f2f6e756765742f762f4b6961686b2e7376673f6c6162656c3d4e75476574)](https://www.nuget.org/packages/Kiahk/)`dotnet add package Kiahk`Kotlin / JVM / Android[`kotlin/`](kotlin/)[![Maven Central](https://camo.githubusercontent.com/f913622a1eda9ca59d13d11ce3cd1d00827fb47c6040407ca5326ed24188e5fd/68747470733a2f2f696d672e736869656c64732e696f2f6d6176656e2d63656e7472616c2f762f636f6d2e77697a6172646c61627a2f6b6961686b2e7376673f6c6162656c3d4d6176656e25323043656e7472616c)](https://central.sonatype.com/artifact/com.wizardlabz/kiahk)`implementation("com.wizardlabz:kiahk:0.1.5")` in GradleC[`c/`](c/)[![Release](https://camo.githubusercontent.com/521410e99cb562db201757391cb515024d23d56d52e1712d5f2bbacf173bd7c1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f616d69722d6d616764792d6f662d77697a6172646c61627a2f6b6961686b3f6c6162656c3d72656c65617365)](https://github.com/amir-magdy-of-wizardlabz/kiahk/releases/latest)download tarball or `add_subdirectory(c)` in CMakeSee each port's README for full install + quick-start examples, and for English + Arabic month-name rendering.

Canonical spec
--------------

[](#canonical-spec)

- `core/algorithms.md` — pseudocode for Gregorian↔Coptic, Easter, feasts
- `core/feasts.json` — fixed + moveable feast registry
- `core/coptic_months.json` — the 13 Coptic month names (English + Arabic)
- `core/test-vectors.json` — cross-port test contract

Every port must produce identical results against `core/test-vectors.json`.

FAQ
---

[](#faq)

### What is the Coptic calendar?

[](#what-is-the-coptic-calendar)

The Coptic (Alexandrian) calendar is the liturgical calendar of the Coptic Orthodox Church of Alexandria. It derives from the ancient Egyptian civil calendar and was reformed by Augustus in 25 BC. Its era is **Anno Martyrum (AM)** — "Year of the Martyrs" — counted from **29 August 284 CE (Julian)**, the year of Diocletian's accession and the persecution of Christians.

### What are the months of the Coptic year?

[](#what-are-the-months-of-the-coptic-year)

There are **13 months**: 12 of exactly 30 days each, plus a short 13th month called **Nasie** of 5 days (6 in leap years). In order: Thout · Paopi · Hathor · Koiak · Tobi · Meshir · Paremhat · Parmouti · Pashons · Paoni · Epip · Mesori · Nasie. (Arabic: توت · بابة · هاتور · كيهك · طوبة · أمشير · برمهات · برمودة · بشنس · بؤونة · أبيب · مسرى · نسيء.) Available via `CopticCalendar.monthName(month, locale)` in every port.

### When does the Coptic year start?

[](#when-does-the-coptic-year-start)

**1 Tout** — falling on either **11 September** or **12 September** in the Gregorian calendar (the later date in the Gregorian year preceding a leap year). The current Coptic year began on 11 September 2025 (Gregorian) and is **1742 AM**.

### When is Coptic Christmas?

[](#when-is-coptic-christmas)

**29 Koiak** in the Coptic calendar, which falls on **7 January** in the Gregorian calendar every year (in the 20th–21st centuries). Same day every year because the Coptic calendar is fixed relative to the Julian calendar, and the Julian-to-Gregorian offset stays at +13 days through 28 February 2100.

### When is Coptic Easter?

[](#when-is-coptic-easter)

Coptic Easter follows the **Julian computus** — the same calculation used by all Eastern Orthodox churches. It can fall anywhere between **April 4 and May 8** in the Gregorian calendar. Examples: 2025 → April 20, 2026 → April 12, 2027 → May 2, 2028 → April 16. Use `CopticCalendar.easterDate(gregorianYear)` to compute it.

### How is Coptic Easter different from Western (Gregorian) Easter?

[](#how-is-coptic-easter-different-from-western-gregorian-easter)

Both use the same underlying rule ("Sunday after the first full moon on or after the spring equinox") but with different reference frames. Western Easter uses the Gregorian calendar and Gregorian computus; Coptic and Eastern Orthodox Easter use the Julian calendar and Julian computus. The two coincide in some years and can be up to **5 weeks apart** in others. Kiahk implements only the Coptic/Julian variant.

### What are the major Coptic feasts?

[](#what-are-the-major-coptic-feasts)

The seven major fixed feasts and the moveable feasts derived from Easter:

FeastTypeDateNativity of Christfixed29 Koiak (7 January)Epiphany (Theophany)fixed11 Tobi (19 January)Annunciationfixed29 Paremhat (7 April)Palm SundaymoveableEaster − 7 daysEaster Sundaymoveable—AscensionmoveableEaster + 39 daysPentecostmoveableEaster + 49 daysFeast of the Crossfixed17 Thout (27 September)Assumption of Maryfixed16 Mesori (22 August)Plus the start of major fasts: Nineveh Fast (Easter − 69 days) and Great Lent (Easter − 55 days).

### How does the Coptic leap year rule work?

[](#how-does-the-coptic-leap-year-rule-work)

A Coptic year `Y` is a leap year if and only if `Y mod 4 == 3`. This is the Julian-style leap rule (one leap every 4 years, no century exception). The extra day always goes to month 13 (Nasie), giving it 6 days instead of 5.

### Why does Kiahk use Julian Day Numbers internally?

[](#why-does-kiahk-use-julian-day-numbers-internally)

The **Julian Day Number (JDN)** is a continuous integer count of days from a single epoch (noon UTC, 1 January 4713 BC proleptic Julian). Routing every conversion through JDN gives you (a) one well-understood arithmetic primitive instead of N²×N two-calendar formulas, and (b) trivial day-arithmetic for moveable feasts (just add/subtract days). All 9 ports do this — see [`core/algorithms.md`](core/algorithms.md).

### Can I use Kiahk in browser JavaScript / on Android / on iOS?

[](#can-i-use-kiahk-in-browser-javascript--on-android--on-ios)

Yes — every port is pure-language with no native dependencies:

- **Browser JS** — the JS port is ESM-only and has zero Node-specific APIs at runtime; works in any modern browser
- **Android** — the Kotlin/JVM port targets JVM 11, Android API 26+ (use Android Gradle Plugin's desugaring for older)
- **iOS / macOS / tvOS / watchOS / visionOS / Linux** — the Swift port is pure-Swift with only `Foundation`; works on every Apple OS plus Linux (and even Android via SwiftPM)
- **Server / CLI** — all 9 ports work as backend libraries

### How do I report a bug or suggest a feature?

[](#how-do-i-report-a-bug-or-suggest-a-feature)

Open an issue at . If you have a security concern, see [`SECURITY.md`](SECURITY.md).

Demo
----

[](#demo)

**Try it live → **

 [ ![Kiahk demo screenshot](assets/demo-screenshot.png) ](https://raw.githack.com/amir-magdy-of-wizardlabz/kiahk/master/demo/index.html)

A small browser demo of the JS port lives in [`demo/`](demo/). It lets you:

- Pick a Gregorian date and see its Coptic equivalent (English + Arabic month names)
- Enter a Gregorian year and view every major Coptic feast (en + ar names, fixed vs moveable)

Source: [`demo/index.html`](demo/index.html), [`demo/app.js`](demo/app.js). See [`demo/README.md`](demo/README.md) for how to run it locally.

> The hosted demo is served via [raw.githack.com](https://raw.githack.com), a free proxy that serves GitHub files with correct MIME types. It reads `master` directly, so the link tracks whatever's on `master` at any given moment.

### About those download numbers

[](#about-those-download-numbers)

Registry download counts are inflated by mirrors and security-scanner bots — sometimes 90%+ of "downloads" for a small package are automated traffic, not human installs. A few things to know about how the badges above compare:

- **PyPI** — the badge points to [pepy.tech](https://www.pepy.tech/projects/kiahk), which filters most bot traffic and gives the closest thing to a real human-install count.
- **npm** — the badge points to [npm-stat.com](https://npm-stat.com/charts.html?package=kiahk) for daily / per-country breakdown. npm's raw `/dm/` counter includes a lot of CI install activity.
- **Packagist** — counts are reasonably honest because Composer caches aggressively.
- **NuGet / CocoaPods** — counts dominated by package-restore in CI; treat as a *direction-of-travel* indicator, not absolute usage.
- **Maven Central** and **pkg.go.dev** — don't expose download stats publicly by design. The library is there; you just can't see who's pulling it.
- **GitHub stars / forks** — small but more honest signals than any of the above. Star the repo if you find it useful.

License
-------

[](#license)

Licensed under the [MIT License](LICENSE).

Maintained by Amir Magdy at WizardLabz.

###  Health Score

35

—

LowBetter than 77% of packages

Maintenance88

Actively maintained with recent releases

Popularity6

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity35

Early-stage or recently created project

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

60d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/131914221?v=4)[Amir Magdy‬‏](/maintainers/amir-magdy-of-wizardlabz)[@amir-magdy-of-wizardlabz](https://github.com/amir-magdy-of-wizardlabz)

---

Tags

calendarتقویمcopticeasterkiahkaboqtyقبطيكيهكعيدالقيامةأبقطي

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/wizardlabz-kiahk/health.svg)

```
[![Health](https://phpackages.com/badges/wizardlabz-kiahk/health.svg)](https://phpackages.com/packages/wizardlabz-kiahk)
```

###  Alternatives

[eluceo/ical

The eluceo/iCal package offers an abstraction layer for creating iCalendars. You can easily create iCal files by using PHP objects instead of typing your \*.ics file by hand. The output will follow RFC 5545 as best as possible.

1.2k18.7M63](/packages/eluceo-ical)[spatie/icalendar-generator

Build calendars in the iCalendar format

6898.7M24](/packages/spatie-icalendar-generator)[spatie/laravel-google-calendar

Manage events on a Google Calendar

1.4k1.8M21](/packages/spatie-laravel-google-calendar)[league/period

Time range API for PHP

7335.8M24](/packages/league-period)[aeon-php/calendar

PHP type safe, immutable calendar library

20810.4M16](/packages/aeon-php-calendar)[laraveljutsu/zap

A flexible, performant, and developer-friendly schedule management system for Laravel

1.5k120.4k1](/packages/laraveljutsu-zap)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
