pythaidate


Namepythaidate JSON
Version 0.2.0 PyPI version JSON
download
home_pagehttps://github.com/hmmbug/pythaidate
SummaryDate classes for Thai calendar systems.
upload_time2023-12-08 22:40:35
maintainer
docs_urlNone
authorMark Hollow
requires_python>=3.8, <4
license
keywords date calendar thai development library
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            # pythaidate: Thai Calendar Systems for Python

![PyPI - License](https://img.shields.io/pypi/l/pythaidate)
![PyPI - Version](https://img.shields.io/pypi/v/pythaidate)

Thailand has used several calendar systems during its history with several still in use today. This library provides `datetime.date`-like classes for working with the Thai lunisolar calendar of the Chulasakarat Era (จุลศักราช) and the lunar Pakkhakhananaa calendar (ปฏิทินปักขคณนา).

# Installation

```
$ python3 -m pip install pythaidate
```

# Examples

## `CsDate`: Chulasakarat Date

`CsDate` objects can be created from a year, month, day triple, like a `datetime.date` object. They represent the Thai lunisolar calendar with the epoch of 22nd March 638 AD. Months should be specified in Sukothai number format (eg. 5 is the first month). The example here specifies month 1 which, according to Sukothai numbering, is the 9th month in the year (although the 10th month in a year with intercalary month). Intercalary months (อธิกมาส) are specified as 88.

```
>>> from pythaidate import CsDate
>>> cs = CsDate(1361, 1, 24)
>>> cs.year, cs.month, cs.day
(1361, 1, 24)
```

The `days` property gives the zero-indexed count of days since new years day.
```
>>> cs.days
260
```

The `horakhun` (หรคุฌ) property gives the days since the epoch and `julianday` gives the Julian Day Number, useful for converting between calendar formats.
```
>>> cs.horakhun
497378
>>> cs.julianday
2451545
```

Other properties show the internal calculation values:
* `kammabucala`: (กัมมัขผล) the excess of solar days over whole solar days
* `masaken`: (มาสเกฌฑ์) The number of lunar months since the epoch
* `uccapon`: (อุจจพล) The measure of the position of the Moon's apogee (furthest distance from the Earth). It increases by one unit a day to a maximum of 3232.
* `avoman`: (อวมาน) The excess of lunar days over solar days in units of 1/692 of a lunar day modulus 692, increasing by 11 units each solar day. It is used to determine when to add intercalary days in the calendar
* `tithi`: (ดิถี) a lunar day, equal to 1/30th of a synodic month

The year and day count since new years day can also be used to create a `CsDate` object with the `fromyd` class method:
```
>>> cs = CsDate.fromyd(1361, 260)
>>> cs.julianday
2451545
```

Similarly, a `CsDate` object can be created from the Julian Day Number:
```
>>> cs = CsDate.fromjulianday(2451545)
>>> cs.year, cs.month, cs.day
(1361, 1, 24)
```

A `CsDate` can be displayed as text with `.csformat()` or by converting the object to a string:
```
>>> cs.csformat()
'วันเสาร์ เดือน ๑ แรม ๙ ค่ำ ปีเถาะ จ.ศ.๑๓๖๑'
>>> str(cs)
'วันเสาร์ เดือน ๑ แรม ๙ ค่ำ ปีเถาะ จ.ศ.๑๓๖๑'
```

`CsDate` objects have 3 properties for intercalations and a day count:
* `solar_leap_year`: for the solar leap year (อธิกสุรทิน)
* `leap_day`: for the lunar intercalary day (อธิกวาร)
* `leap_month`: for the lunar intercalary month (อธิกมาส)
* `days_in_year`: returns the number of days in the year. This will be one of:
    * 354: no intercalations (ปกติมาส ปกติวาร)
    * 355: intercalary month, no intercalary day (ปกติมาส อธิกวาร)
    * 384: no intercalary month, intercalary day (อธิกมาส ปกติวาร)

In the Thai lunisolar calendar system a year can only have either zero or one intercalations. There can't be both an intercalary day (อธิกวาร) and month (อธิกมาส) in the same year.
```
>>> cs.solar_leap_year
False
>>> cs.leap_day
False
>>> cs.leap_month
True
>>> cs.days_in_year
384
```

## `PakDate`: Pakkhakhananaa Date

Create a `PakDate` object from a pakcode. The `1-` prefix is the cycle number (1-indexed), followed by the ปักขคณนา, สัมพยุหะ, พยุหะ, สมุหะ, วรรค and day of moon phase. The Pakkhakhananaa cycle repeats every 289,577 days.
```
>>> from pythaidate import PakDate
>>> p = PakDate(pakcode="1-6:11:5:2:2:10")
>>> p.horakhun
96398
>>> p.julianday
2451545
>>> p.iswanphra
False
```
Note that the `horakhun` value from Pakkhakhananaa lunar and (Chulasakarat era) lunisolar calendars are not compatible as they represent day count since the epoch of each calendar. For comparisons use `julianday` instead. `iswanphra` has an alias `issabbath`.

The Pakkhakhananaa code and abbreviations are available:
```
>>> p.pakcode
'1-6:11:5:2:2:10'
>>> print(p.pakabbr)
๖๑๕ข๒
 ๑
```

Pakkhakhananaa can be created from a `datetime.date` object:
```
>>> from datetime import date
>>> from pythaidate import PakDate
>>> p = PakDate(date=date(2000, 1, 1))
>>> p.julianday
2451545
```
...and from Julian Day Number:
```
>>> from pythaidate import PakDate
>>> p = PakDate(jd=2451545)
>>> p.julianday
2451545
>>> p.pakcode
'1-6:11:5:2:2:10'
```
`pakboard()` will display an ASCII Pakkhakhananaa board (กระดานปักขคณนา) and (best viewed with a fixed-width font):
```
>>> p.pakboard()
           ๑  ๒  ๓  ๔  ๕  ๖  ๗  ๘  ๙ ๑๐ ๑๑ ๑๒ ๑๓ ๑๔ ๑๕ ๑๖ ๑๗ ๑๘
ปักขคณนา    ม  ม  ม  ม  ม  ม  ม  ม  ม  ม  ม  ม  ม  ม  ม  ม  ม  จ
มหาสัมพยุหะ  จ  จ  จ  จ  จ  จ  จ  จ  จ  จ  ม
จุลสัมพยุหะ   จ  จ  จ  จ  จ  จ  จ  จ  จ  ม
มหาพยุหะ    ม  ม  ม  ม  ม  ม  จ
จุลพยุหะ     ม  ม  ม  ม  ม  จ
มหาสมุหะ    จ  จ  จ  ม
จุลสมุหะ     จ  จ  ม
มหาวรรค    ม  ม  ม  ม  จ
จุลวรรค     ม  ม  ม  จ
มหาปักข์     ๑  ๒  ๓  ๔  ๕  ๖  ๗  ๘  ๙ ๑๐ ๑๑ ๑๒ ๑๓ ๑๔ ๑๕
จุลปักข์      ๑  ๒  ๓  ๔  ๕  ๖  ๗  ๘  ๙ ๑๐ ๑๑ ๑๒ ๑๓ ๑๔
           รอบที่ ๑   หรคุณปักขคณนา ๙๖๓๙๘   ปักขเกณฑ์ ๖๕๒๙
```

## Julian Day Number (JDN) helpers

* `to_julianday(year, month, day)`: Returns JDN from a year, month, day triple
* `from_julianday(jd)`: Returns a year, month, day triple from a JDN
* `today()`: returns JDN for today
* `date_to_julianday(d)`: converts `datetime.date` object or other object with a `julianday` property to JDN
* `julianday_to_date(jd)`: converts JDN to a `datetime.date` object

## `pythaidate.date`: A `datetime.date` subclass

`pythaidate.date` is a simple subclass of `datetime.date` with an added `.julianday` property:

```
>>> from pythaidate import date
>>> d = date(2000, 1, 1)
>>> d.julianday
2451545
```

# Limitations

## General

* Tested and supported on Python 3.8 - 3.12.

## Chulasakarat Era Lunisolar Calendar

* The determination of which years are intercalary has been a somewhat subjective process and changed over the centuries, along with regional variations too. This library produces 7 intercalary months per 19 year period and 11 intercalary days per 57 years. This maintains the overall "pace" of the calendar but there may be slight short-term deviations from other calendars. But don't worry, those other calendars are just as wrong too - there's no definitive reference calendar.
* Currently only supports Sukothai-style month numbering (eg. first month of the year is month 5)
* `strftime` and `strptime` are not implemented

# Selected References

## Thai

* หลวงวิศาลดรุณกร (อั้น สาริกบุตร) (1997) คัมภีร์โหราศาสตร์ไทย มาตรฐาน ฉบับสมบูรณ์. Thailand: ศรีปัญญา, สนพ.

* [ความรู้เรื่องปักขคณนา ตําราการคํานวณปฏิทินทางจันทรคติ](https://archive.org/details/unset0000unse_d6m6). (1999). Thailand: มูลนิธิมหามกุฏราชวิทยาลัยฯ.

## English

* Eade, J.C. (2018). The Calendrical Systems of Mainland South-East Asia. Netherlands: Brill.
* Gislén L., Eade, J.C. (2019). The Calendars of Southeast Asia 2: Burma, Thailand, Laos and Cambodia. Journal of Astronomical History and Heritage, 22(3).

## French

* Faraut, F. G. (1910). [Astronomie cambodgienne](https://archive.org/details/farraut0astonomiecambodgienne). Vietnam: Imprimerie F.-H. Schneider.

* Billard, R. L'Astronomie Indienne. Investigation des Textes Sanskrits et des Donnees Numeriques. Paris: Ecole francaise d'extreme-orient. (1971).

# Other Resources

* [NASA's Julian Day Number Calculator](https://core2.gsfc.nasa.gov/time/julian.html)
* [ปฏิทินปักขคณนา.com](https://xn--12ccg5bxauoekd6vraqb.com/)

# Contributors

* Mark Hollow <dev {at} hmmbug.com> (Project Owner)

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/hmmbug/pythaidate",
    "name": "pythaidate",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8, <4",
    "maintainer_email": "",
    "keywords": "date,calendar,thai,development,library",
    "author": "Mark Hollow",
    "author_email": "dev@hmmbug.com",
    "download_url": "https://files.pythonhosted.org/packages/d8/5b/7b72b88b0ad9db26117206b0a4a8a695ec5e696c45d90f3cf75e4dfc54ac/pythaidate-0.2.0.tar.gz",
    "platform": null,
    "description": "# pythaidate: Thai Calendar Systems for Python\n\n![PyPI - License](https://img.shields.io/pypi/l/pythaidate)\n![PyPI - Version](https://img.shields.io/pypi/v/pythaidate)\n\nThailand has used several calendar systems during its history with several still in use today. This library provides `datetime.date`-like classes for working with the Thai lunisolar calendar of the Chulasakarat Era (\u0e08\u0e38\u0e25\u0e28\u0e31\u0e01\u0e23\u0e32\u0e0a) and the lunar Pakkhakhananaa calendar (\u0e1b\u0e0f\u0e34\u0e17\u0e34\u0e19\u0e1b\u0e31\u0e01\u0e02\u0e04\u0e13\u0e19\u0e32).\n\n# Installation\n\n```\n$ python3 -m pip install pythaidate\n```\n\n# Examples\n\n## `CsDate`: Chulasakarat Date\n\n`CsDate` objects can be created from a year, month, day triple, like a `datetime.date` object. They represent the Thai lunisolar calendar with the epoch of 22nd March 638 AD. Months should be specified in Sukothai number format (eg. 5 is the first month). The example here specifies month 1 which, according to Sukothai numbering, is the 9th month in the year (although the 10th month in a year with intercalary month). Intercalary months (\u0e2d\u0e18\u0e34\u0e01\u0e21\u0e32\u0e2a) are specified as 88.\n\n```\n>>> from pythaidate import CsDate\n>>> cs = CsDate(1361, 1, 24)\n>>> cs.year, cs.month, cs.day\n(1361, 1, 24)\n```\n\nThe `days` property gives the zero-indexed count of days since new years day.\n```\n>>> cs.days\n260\n```\n\nThe `horakhun` (\u0e2b\u0e23\u0e04\u0e38\u0e0c) property gives the days since the epoch and `julianday` gives the Julian Day Number, useful for converting between calendar formats.\n```\n>>> cs.horakhun\n497378\n>>> cs.julianday\n2451545\n```\n\nOther properties show the internal calculation values:\n* `kammabucala`: (\u0e01\u0e31\u0e21\u0e21\u0e31\u0e02\u0e1c\u0e25) the excess of solar days over whole solar days\n* `masaken`: (\u0e21\u0e32\u0e2a\u0e40\u0e01\u0e0c\u0e11\u0e4c) The number of lunar months since the epoch\n* `uccapon`: (\u0e2d\u0e38\u0e08\u0e08\u0e1e\u0e25) The measure of the position of the Moon's apogee (furthest distance from the Earth). It increases by one unit a day to a maximum of 3232.\n* `avoman`: (\u0e2d\u0e27\u0e21\u0e32\u0e19) The excess of lunar days over solar days in units of 1/692 of a lunar day modulus 692, increasing by 11 units each solar day. It is used to determine when to add intercalary days in the calendar\n* `tithi`: (\u0e14\u0e34\u0e16\u0e35) a lunar day, equal to 1/30th of a synodic month\n\nThe year and day count since new years day can also be used to create a `CsDate` object with the `fromyd` class method:\n```\n>>> cs = CsDate.fromyd(1361, 260)\n>>> cs.julianday\n2451545\n```\n\nSimilarly, a `CsDate` object can be created from the Julian Day Number:\n```\n>>> cs = CsDate.fromjulianday(2451545)\n>>> cs.year, cs.month, cs.day\n(1361, 1, 24)\n```\n\nA `CsDate` can be displayed as text with `.csformat()` or by converting the object to a string:\n```\n>>> cs.csformat()\n'\u0e27\u0e31\u0e19\u0e40\u0e2a\u0e32\u0e23\u0e4c \u0e40\u0e14\u0e37\u0e2d\u0e19 \u0e51 \u0e41\u0e23\u0e21 \u0e59 \u0e04\u0e48\u0e33 \u0e1b\u0e35\u0e40\u0e16\u0e32\u0e30 \u0e08.\u0e28.\u0e51\u0e53\u0e56\u0e51'\n>>> str(cs)\n'\u0e27\u0e31\u0e19\u0e40\u0e2a\u0e32\u0e23\u0e4c \u0e40\u0e14\u0e37\u0e2d\u0e19 \u0e51 \u0e41\u0e23\u0e21 \u0e59 \u0e04\u0e48\u0e33 \u0e1b\u0e35\u0e40\u0e16\u0e32\u0e30 \u0e08.\u0e28.\u0e51\u0e53\u0e56\u0e51'\n```\n\n`CsDate` objects have 3 properties for intercalations and a day count:\n* `solar_leap_year`: for the solar leap year (\u0e2d\u0e18\u0e34\u0e01\u0e2a\u0e38\u0e23\u0e17\u0e34\u0e19)\n* `leap_day`: for the lunar intercalary day (\u0e2d\u0e18\u0e34\u0e01\u0e27\u0e32\u0e23)\n* `leap_month`: for the lunar intercalary month (\u0e2d\u0e18\u0e34\u0e01\u0e21\u0e32\u0e2a)\n* `days_in_year`: returns the number of days in the year. This will be one of:\n    * 354: no intercalations (\u0e1b\u0e01\u0e15\u0e34\u0e21\u0e32\u0e2a \u0e1b\u0e01\u0e15\u0e34\u0e27\u0e32\u0e23)\n    * 355: intercalary month, no intercalary day (\u0e1b\u0e01\u0e15\u0e34\u0e21\u0e32\u0e2a \u0e2d\u0e18\u0e34\u0e01\u0e27\u0e32\u0e23)\n    * 384: no intercalary month, intercalary day (\u0e2d\u0e18\u0e34\u0e01\u0e21\u0e32\u0e2a \u0e1b\u0e01\u0e15\u0e34\u0e27\u0e32\u0e23)\n\nIn the Thai lunisolar calendar system a year can only have either zero or one intercalations. There can't be both an intercalary day (\u0e2d\u0e18\u0e34\u0e01\u0e27\u0e32\u0e23) and month (\u0e2d\u0e18\u0e34\u0e01\u0e21\u0e32\u0e2a) in the same year.\n```\n>>> cs.solar_leap_year\nFalse\n>>> cs.leap_day\nFalse\n>>> cs.leap_month\nTrue\n>>> cs.days_in_year\n384\n```\n\n## `PakDate`: Pakkhakhananaa Date\n\nCreate a `PakDate` object from a pakcode. The `1-` prefix is the cycle number (1-indexed), followed by the \u0e1b\u0e31\u0e01\u0e02\u0e04\u0e13\u0e19\u0e32, \u0e2a\u0e31\u0e21\u0e1e\u0e22\u0e38\u0e2b\u0e30, \u0e1e\u0e22\u0e38\u0e2b\u0e30, \u0e2a\u0e21\u0e38\u0e2b\u0e30, \u0e27\u0e23\u0e23\u0e04 and day of moon phase. The Pakkhakhananaa cycle repeats every 289,577 days.\n```\n>>> from pythaidate import PakDate\n>>> p = PakDate(pakcode=\"1-6:11:5:2:2:10\")\n>>> p.horakhun\n96398\n>>> p.julianday\n2451545\n>>> p.iswanphra\nFalse\n```\nNote that the `horakhun` value from Pakkhakhananaa lunar and (Chulasakarat era) lunisolar calendars are not compatible as they represent day count since the epoch of each calendar. For comparisons use `julianday` instead. `iswanphra` has an alias `issabbath`.\n\nThe Pakkhakhananaa code and abbreviations are available:\n```\n>>> p.pakcode\n'1-6:11:5:2:2:10'\n>>> print(p.pakabbr)\n\u0e56\u0e51\u0e55\u0e02\u0e52\n \u0e51\n```\n\nPakkhakhananaa can be created from a `datetime.date` object:\n```\n>>> from datetime import date\n>>> from pythaidate import PakDate\n>>> p = PakDate(date=date(2000, 1, 1))\n>>> p.julianday\n2451545\n```\n...and from Julian Day Number:\n```\n>>> from pythaidate import PakDate\n>>> p = PakDate(jd=2451545)\n>>> p.julianday\n2451545\n>>> p.pakcode\n'1-6:11:5:2:2:10'\n```\n`pakboard()` will display an ASCII Pakkhakhananaa board (\u0e01\u0e23\u0e30\u0e14\u0e32\u0e19\u0e1b\u0e31\u0e01\u0e02\u0e04\u0e13\u0e19\u0e32) and (best viewed with a fixed-width font):\n```\n>>> p.pakboard()\n           \u0e51  \u0e52  \u0e53  \u0e54  \u0e55  \u0e56  \u0e57  \u0e58  \u0e59 \u0e51\u0e50 \u0e51\u0e51 \u0e51\u0e52 \u0e51\u0e53 \u0e51\u0e54 \u0e51\u0e55 \u0e51\u0e56 \u0e51\u0e57 \u0e51\u0e58\n\u0e1b\u0e31\u0e01\u0e02\u0e04\u0e13\u0e19\u0e32    \u0e21  \u0e21  \u0e21  \u0e21  \u0e21  \u0e21  \u0e21  \u0e21  \u0e21  \u0e21  \u0e21  \u0e21  \u0e21  \u0e21  \u0e21  \u0e21  \u0e21  \u0e08\n\u0e21\u0e2b\u0e32\u0e2a\u0e31\u0e21\u0e1e\u0e22\u0e38\u0e2b\u0e30  \u0e08  \u0e08  \u0e08  \u0e08  \u0e08  \u0e08  \u0e08  \u0e08  \u0e08  \u0e08  \u0e21\n\u0e08\u0e38\u0e25\u0e2a\u0e31\u0e21\u0e1e\u0e22\u0e38\u0e2b\u0e30   \u0e08  \u0e08  \u0e08  \u0e08  \u0e08  \u0e08  \u0e08  \u0e08  \u0e08  \u0e21\n\u0e21\u0e2b\u0e32\u0e1e\u0e22\u0e38\u0e2b\u0e30    \u0e21  \u0e21  \u0e21  \u0e21  \u0e21  \u0e21  \u0e08\n\u0e08\u0e38\u0e25\u0e1e\u0e22\u0e38\u0e2b\u0e30     \u0e21  \u0e21  \u0e21  \u0e21  \u0e21  \u0e08\n\u0e21\u0e2b\u0e32\u0e2a\u0e21\u0e38\u0e2b\u0e30    \u0e08  \u0e08  \u0e08  \u0e21\n\u0e08\u0e38\u0e25\u0e2a\u0e21\u0e38\u0e2b\u0e30     \u0e08  \u0e08  \u0e21\n\u0e21\u0e2b\u0e32\u0e27\u0e23\u0e23\u0e04    \u0e21  \u0e21  \u0e21  \u0e21  \u0e08\n\u0e08\u0e38\u0e25\u0e27\u0e23\u0e23\u0e04     \u0e21  \u0e21  \u0e21  \u0e08\n\u0e21\u0e2b\u0e32\u0e1b\u0e31\u0e01\u0e02\u0e4c     \u0e51  \u0e52  \u0e53  \u0e54  \u0e55  \u0e56  \u0e57  \u0e58  \u0e59 \u0e51\u0e50 \u0e51\u0e51 \u0e51\u0e52 \u0e51\u0e53 \u0e51\u0e54 \u0e51\u0e55\n\u0e08\u0e38\u0e25\u0e1b\u0e31\u0e01\u0e02\u0e4c      \u0e51  \u0e52  \u0e53  \u0e54  \u0e55  \u0e56  \u0e57  \u0e58  \u0e59 \u0e51\u0e50 \u0e51\u0e51 \u0e51\u0e52 \u0e51\u0e53 \u0e51\u0e54\n           \u0e23\u0e2d\u0e1a\u0e17\u0e35\u0e48 \u0e51   \u0e2b\u0e23\u0e04\u0e38\u0e13\u0e1b\u0e31\u0e01\u0e02\u0e04\u0e13\u0e19\u0e32 \u0e59\u0e56\u0e53\u0e59\u0e58   \u0e1b\u0e31\u0e01\u0e02\u0e40\u0e01\u0e13\u0e11\u0e4c \u0e56\u0e55\u0e52\u0e59\n```\n\n## Julian Day Number (JDN) helpers\n\n* `to_julianday(year, month, day)`: Returns JDN from a year, month, day triple\n* `from_julianday(jd)`: Returns a year, month, day triple from a JDN\n* `today()`: returns JDN for today\n* `date_to_julianday(d)`: converts `datetime.date` object or other object with a `julianday` property to JDN\n* `julianday_to_date(jd)`: converts JDN to a `datetime.date` object\n\n## `pythaidate.date`: A `datetime.date` subclass\n\n`pythaidate.date` is a simple subclass of `datetime.date` with an added `.julianday` property:\n\n```\n>>> from pythaidate import date\n>>> d = date(2000, 1, 1)\n>>> d.julianday\n2451545\n```\n\n# Limitations\n\n## General\n\n* Tested and supported on Python 3.8 - 3.12.\n\n## Chulasakarat Era Lunisolar Calendar\n\n* The determination of which years are intercalary has been a somewhat subjective process and changed over the centuries, along with regional variations too. This library produces 7 intercalary months per 19 year period and 11 intercalary days per 57 years. This maintains the overall \"pace\" of the calendar but there may be slight short-term deviations from other calendars. But don't worry, those other calendars are just as wrong too - there's no definitive reference calendar.\n* Currently only supports Sukothai-style month numbering (eg. first month of the year is month 5)\n* `strftime` and `strptime` are not implemented\n\n# Selected References\n\n## Thai\n\n* \u0e2b\u0e25\u0e27\u0e07\u0e27\u0e34\u0e28\u0e32\u0e25\u0e14\u0e23\u0e38\u0e13\u0e01\u0e23 (\u0e2d\u0e31\u0e49\u0e19 \u0e2a\u0e32\u0e23\u0e34\u0e01\u0e1a\u0e38\u0e15\u0e23) (1997) \u0e04\u0e31\u0e21\u0e20\u0e35\u0e23\u0e4c\u0e42\u0e2b\u0e23\u0e32\u0e28\u0e32\u0e2a\u0e15\u0e23\u0e4c\u0e44\u0e17\u0e22 \u0e21\u0e32\u0e15\u0e23\u0e10\u0e32\u0e19 \u0e09\u0e1a\u0e31\u0e1a\u0e2a\u0e21\u0e1a\u0e39\u0e23\u0e13\u0e4c.\u00a0Thailand:\u00a0\u0e28\u0e23\u0e35\u0e1b\u0e31\u0e0d\u0e0d\u0e32, \u0e2a\u0e19\u0e1e.\n\n* [\u0e04\u0e27\u0e32\u0e21\u0e23\u0e39\u0e49\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e1b\u0e31\u0e01\u0e02\u0e04\u0e13\u0e19\u0e32 \u0e15\u0e4d\u0e32\u0e23\u0e32\u0e01\u0e32\u0e23\u0e04\u0e4d\u0e32\u0e19\u0e27\u0e13\u0e1b\u0e0f\u0e34\u0e17\u0e34\u0e19\u0e17\u0e32\u0e07\u0e08\u0e31\u0e19\u0e17\u0e23\u0e04\u0e15\u0e34](https://archive.org/details/unset0000unse_d6m6).\u00a0(1999).\u00a0Thailand:\u00a0\u0e21\u0e39\u0e25\u0e19\u0e34\u0e18\u0e34\u0e21\u0e2b\u0e32\u0e21\u0e01\u0e38\u0e0f\u0e23\u0e32\u0e0a\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22\u0e2f.\n\n## English\n\n* Eade,\u00a0J.C.\u00a0(2018).\u00a0The Calendrical Systems of Mainland South-East Asia.\u00a0Netherlands:\u00a0Brill.\n* Gisl\u00e9n L., Eade, J.C. (2019). The Calendars of Southeast Asia 2: Burma, Thailand, Laos and Cambodia. Journal of Astronomical History and Heritage, 22(3).\n\n## French\n\n* Faraut,\u00a0F.\u00a0G.\u00a0(1910).\u00a0[Astronomie cambodgienne](https://archive.org/details/farraut0astonomiecambodgienne).\u00a0Vietnam:\u00a0Imprimerie F.-H. Schneider.\n\n* Billard, R. L'Astronomie Indienne. Investigation des Textes Sanskrits et des Donnees Numeriques. Paris: Ecole francaise d'extreme-orient. (1971).\n\n# Other Resources\n\n* [NASA's Julian Day Number Calculator](https://core2.gsfc.nasa.gov/time/julian.html)\n* [\u0e1b\u0e0f\u0e34\u0e17\u0e34\u0e19\u0e1b\u0e31\u0e01\u0e02\u0e04\u0e13\u0e19\u0e32.com](https://xn--12ccg5bxauoekd6vraqb.com/)\n\n# Contributors\n\n* Mark Hollow <dev {at} hmmbug.com> (Project Owner)\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Date classes for Thai calendar systems.",
    "version": "0.2.0",
    "project_urls": {
        "Bug Reports": "https://github.com/hmmbug/pythaidate/issues",
        "Homepage": "https://github.com/hmmbug/pythaidate",
        "Source": "https://github.com/hmmbug/pythaidate/"
    },
    "split_keywords": [
        "date",
        "calendar",
        "thai",
        "development",
        "library"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cc3738f034e9bc34acc96169cc52d87027d80a3f7fe601d278f31b0069203a85",
                "md5": "861ce62de6f2031c825f362a45d96b4a",
                "sha256": "49ded64733a14db17ae71d3b53ac17b56117c665dae232b9ac245d70a5540fe4"
            },
            "downloads": -1,
            "filename": "pythaidate-0.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "861ce62de6f2031c825f362a45d96b4a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8, <4",
            "size": 18930,
            "upload_time": "2023-12-08T22:40:33",
            "upload_time_iso_8601": "2023-12-08T22:40:33.741852Z",
            "url": "https://files.pythonhosted.org/packages/cc/37/38f034e9bc34acc96169cc52d87027d80a3f7fe601d278f31b0069203a85/pythaidate-0.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d85b7b72b88b0ad9db26117206b0a4a8a695ec5e696c45d90f3cf75e4dfc54ac",
                "md5": "75eb61b040a455f37ec708b2bc1041ec",
                "sha256": "717162d59de37b4edae6cb31d89e82dd32e9c3aadb2700b7156f8f8ba78aa146"
            },
            "downloads": -1,
            "filename": "pythaidate-0.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "75eb61b040a455f37ec708b2bc1041ec",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8, <4",
            "size": 815668,
            "upload_time": "2023-12-08T22:40:35",
            "upload_time_iso_8601": "2023-12-08T22:40:35.530048Z",
            "url": "https://files.pythonhosted.org/packages/d8/5b/7b72b88b0ad9db26117206b0a4a8a695ec5e696c45d90f3cf75e4dfc54ac/pythaidate-0.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-12-08 22:40:35",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "hmmbug",
    "github_project": "pythaidate",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "requirements": [],
    "lcname": "pythaidate"
}
        
Elapsed time: 0.15692s