LongCount
Defined in: lc/long-count.ts:37
Long Count cycle.
The Long Count is a mixed-radix numeral system used by the ancient Maya to track days elapsed since a creation-era base date. This implementation uses the standard epoch per scholarly literature [R1, R2]:
Epoch (Maya Day Number (MDN) = 0): 13.0.0.0.0 4 Ajaw 8 Kumk'u
This date represents the completion of the 13th bak'tun in Maya cosmology and serves as the anchor for all Long Count calculations and correlation with Western calendars. MDN is analogous to Julian Day Number, but for the Maya calendar system.
Units (mixed-radix system):
- 1 k'in = 1 day
- 1 winal = 20 k'in
- 1 tun = 18 winal = 360 days
- 1 k'atun = 20 tun = 7,200 days
- 1 bak'tun = 20 k'atun = 144,000 days
See
- Reingold, Dershowitz, & Clamen (1993) [R1]
- Martin & Skidmore (2012) [R2]
Extends
Constructors
Constructor
new LongCount(...
cycles):LongCount
Defined in: lc/long-count.ts:219
Parameters
cycles
...(number | Wildcard)[]
Components in the long count (eg, K'in, Winal, Bak'tun, etc)
Returns
LongCount
Overrides
Properties
comment
comment:
Comment
Defined in: comment-wrapper.ts:11
Attached comment.
Inherited from
datePattern
datePattern:
RegExp
Defined in: lc/distance-number.ts:12
Inherited from
parts
parts: (
number|Wildcard)[]
Defined in: lc/distance-number.ts:11
Inherited from
sign
sign:
number
Defined in: lc/distance-number.ts:13
Inherited from
Accessors
bakTun
Get Signature
get bakTun():
number|Wildcard
Defined in: lc/distance-number.ts:262
Return the bak'tun component of the fullDate
Returns
number | Wildcard
Set Signature
set bakTun(
newBakTun):void
Defined in: lc/distance-number.ts:254
Set the bak'tun component of the fullDate
Parameters
newBakTun
number | Wildcard
Returns
void
Inherited from
gregorian
Get Signature
get gregorian():
GregorianCalendarDate
Defined in: lc/long-count.ts:261
Return a Gregorian representation of this long count date, offset by the correlation constant.
Returns
isNegative
Get Signature
get isNegative():
boolean
Defined in: lc/distance-number.ts:60
Return true if the Long Count is operating as a negative Distance Number.
Returns
boolean
Set Signature
set isNegative(
newNegative):void
Defined in: lc/distance-number.ts:76
Set this Long Count as being a negative Distance Number
Parameters
newNegative
boolean
Returns
void
Inherited from
isPositive
Get Signature
get isPositive():
boolean
Defined in: lc/distance-number.ts:52
Return true if the Long Count is positive.
Returns
boolean
Set Signature
set isPositive(
newPositive):void
Defined in: lc/distance-number.ts:68
Set this Long Count as being a Long Count or a positive Distance Number
Parameters
newPositive
boolean
Returns
void
Inherited from
julian
Get Signature
get julian():
JulianCalendarDate
Defined in: lc/long-count.ts:269
Return a Julian representation of this long count date, offset by the correlation constant.
Returns
julianDay
Get Signature
get julianDay():
number
Defined in: lc/long-count.ts:253
Return a representation of this Long Count in Julian Days.
Returns
number
kalabtun
Get Signature
get kalabtun():
number|Wildcard
Defined in: lc/distance-number.ts:292
Return the kalabtun component of the fullDate
Returns
number | Wildcard
Set Signature
set kalabtun(
newBakTun):void
Defined in: lc/distance-number.ts:284
Set the kalabtun component of the fullDate
Parameters
newBakTun
number | Wildcard
Returns
void
Inherited from
kAtun
Get Signature
get kAtun():
number|Wildcard
Defined in: lc/distance-number.ts:247
Return the k'atun component of the fullDate
Returns
number | Wildcard
Set Signature
set kAtun(
newKAtun):void
Defined in: lc/distance-number.ts:239
Set the k'atun component of the fullDate
Parameters
newKAtun
number | Wildcard
Returns
void
Inherited from
kIn
Get Signature
get kIn():
number|Wildcard
Defined in: lc/distance-number.ts:202
Return the k'in component of the fullDate
Returns
number | Wildcard
Set Signature
set kIn(
newKIn):void
Defined in: lc/distance-number.ts:194
Set the k'in component of the fullDate
Parameters
newKIn
number | Wildcard
Returns
void
Inherited from
kinchiltun
Get Signature
get kinchiltun():
number|Wildcard
Defined in: lc/distance-number.ts:307
Return the kinchiltun component of the fullDate
Returns
number | Wildcard
Set Signature
set kinchiltun(
newBakTun):void
Defined in: lc/distance-number.ts:299
Set the kinchiltun component of the fullDate
Parameters
newBakTun
number | Wildcard
Returns
void
Inherited from
lordOfNight
Get Signature
get lordOfNight():
LordOfTheNight
Defined in: lc/long-count.ts:285
Returns
piktun
Get Signature
get piktun():
number|Wildcard
Defined in: lc/distance-number.ts:277
Return the piktun component of the fullDate
Returns
number | Wildcard
Set Signature
set piktun(
newBakTun):void
Defined in: lc/distance-number.ts:269
Set the piktun component of the fullDate
Parameters
newBakTun
number | Wildcard
Returns
void
Inherited from
sigParts
Get Signature
get sigParts(): (
number|Wildcard)[]
Defined in: lc/distance-number.ts:120
Only digits in the LC with significant digits
Returns
(number | Wildcard)[]
Inherited from
tun
Get Signature
get tun():
number|Wildcard
Defined in: lc/distance-number.ts:232
Return the tun component of the fullDate
Returns
number | Wildcard
Set Signature
set tun(
newTun):void
Defined in: lc/distance-number.ts:224
Set the tun component of the fullDate
Parameters
newTun
number | Wildcard
Returns
void
Inherited from
winal
Get Signature
get winal():
number|Wildcard
Defined in: lc/distance-number.ts:217
Return the winal component of the fullDate
Returns
number | Wildcard
Set Signature
set winal(
newWinal):void
Defined in: lc/distance-number.ts:209
Set the winal component of the fullDate
Parameters
newWinal
number | Wildcard
Returns
void
Inherited from
Methods
appendComment()
appendComment(
comment):this
Defined in: comment-wrapper.ts:42
Append additional text to the current comment.
Parameters
comment
string | Comment
Returns
this
Inherited from
asDistanceNumber()
asDistanceNumber():
DistanceNumber
Defined in: lc/long-count.ts:340
Return this Long Count as a Distance Number
Returns
buildCalendarRound()
buildCalendarRound():
CalendarRound
Defined in: lc/long-count.ts:295
Returns
buildFullDate()
buildFullDate():
FullDate
Defined in: lc/long-count.ts:305
Returns
FullDate
clone()
clone():
LongCount
Defined in: lc/long-count.ts:277
Create a copy object of this long count fullDate
Returns
LongCount
Overrides
commentIsEqual()
commentIsEqual(
otherCommentWrapper):boolean
Defined in: comment-wrapper.ts:60
Compare this wrapper's comment against another wrapper.
Parameters
otherCommentWrapper
Returns
boolean
Inherited from
equal()
equal(
other):boolean
Defined in: lc/long-count.ts:351
Compare two Long Count dates for equality. Unlike DistanceNumber.equal(), this compares all parts, handling trailing zeros correctly. This ensures dates with k'in=0 are compared correctly (e.g., 0.0.0.0.0 vs 0.2.12.13.0).
Parameters
other
Returns
boolean
Overrides
equalWithComment()
equalWithComment(
otherCommentWrapper):boolean
Defined in: comment-wrapper.ts:67
Check equality including the associated comment.
Parameters
otherCommentWrapper
Returns
boolean
Inherited from
DistanceNumber.equalWithComment
exactlyEqual()
exactlyEqual(
other):boolean
Defined in: lc/distance-number.ts:107
Given two long count dates, check if they are exactly equal
Parameters
other
Returns
boolean
Inherited from
getDateSections()
getDateSections(
index):number|Wildcard
Defined in: lc/distance-number.ts:145
Get specific column in Long Count fullDate
Parameters
index
number
Returns
number | Wildcard
Inherited from
DistanceNumber.getDateSections
getPosition()
getPosition():
number
Defined in: lc/distance-number.ts:332
Count the number of days since 0.0.0.0.0 for this LC.
Returns
number
Inherited from
gt()
gt(
newLongCount):boolean
Defined in: lc/distance-number.ts:187
Compare is this LC is less than the supplied LC.
Parameters
newLongCount
Returns
boolean
Inherited from
isPartial()
isPartial():
boolean
Defined in: lc/distance-number.ts:324
Returns true if any of the positions in the Long Count have been assigned a Wildcard object.
Returns
boolean
Inherited from
isValid()
isValid():
boolean
Defined in: lc/distance-number.ts:315
Ensure the fullDate has only numbers and wildcards separated by points.
Returns
boolean
Inherited from
lt()
lt(
newLongCount):boolean
Defined in: lc/distance-number.ts:178
Compare if this LC is greater than the supplied LC.
Parameters
newLongCount
Returns
boolean
Inherited from
map()
map(
fn):any[]
Defined in: lc/distance-number.ts:169
Pass the map down to the parts
Parameters
fn
(lcPart, lcPartIndex) => any
Returns
any[]
Inherited from
minus()
minus(
newLc):LongcountSubtraction
Defined in: lc/long-count.ts:329
Return the difference between this Long Count and the supplied
Parameters
newLc
LongCount
Returns
Overrides
normalise()
normalise():
DistanceNumber
Defined in: lc/distance-number.ts:399
Make sure the elements of the Long Count do not exceed their valid ranges. Converts the Long Count to total days, then decomposes back to normalized form with proper carry/borrow per the mixed-radix system [R1, R2]:
- k'in ∈ [0,19]
- winal ∈ [0,17] (18 winal = 1 tun)
- tun ∈ [0,19]
- k'atun ∈ [0,19]
- bak'tun and higher are unbounded
Returns
Inherited from
plus()
plus(
newLc):LongcountAddition
Defined in: lc/long-count.ts:317
Return the sum of this Long Count and the supplied
Parameters
newLc
LongCount
Returns
Overrides
resetComment()
resetComment():
this
Defined in: comment-wrapper.ts:20
Reset the current comment back to an empty comment.
Returns
this
Inherited from
setComment()
setComment(
comment):this
Defined in: comment-wrapper.ts:28
Replace the current comment.
Parameters
comment
string | Comment
Returns
this
Inherited from
setCorrelationConstant()
setCorrelationConstant(
newConstant):LongCount
Defined in: lc/long-count.ts:244
Chainable method to set the correlation constant
Parameters
newConstant
Returns
LongCount
setDateSections()
setDateSections(
index,newValue):LongCount
Defined in: lc/distance-number.ts:159
Set specific column in Long Count fullDate
Parameters
index
number
newValue
number | Wildcard
Returns
LongCount
Inherited from
DistanceNumber.setDateSections
toString()
toString():
string
Defined in: lc/distance-number.ts:454
Convert the LongCount to a string and pad the sections of the fullDate
Returns
string
Inherited from
fromDistanceNumber()
staticfromDistanceNumber(dn):LongCount
Defined in: lc/long-count.ts:39
Parameters
dn
Returns
LongCount
fromGregorian()
staticfromGregorian(gregorian,correlation):LongCount
Defined in: lc/long-count.ts:74
Create a Long Count from a Gregorian date.
Accepts JavaScript Date objects or ISO 8601 date strings and converts them to the corresponding Maya Long Count date using the specified correlation constant. The default correlation (584283, original GMT) is used unless specified otherwise.
Important: This method uses the proleptic Gregorian calendar for all dates, including historical dates before the Gregorian calendar was adopted in 1582. JavaScript Date objects always use the proleptic Gregorian calendar. Only the date portion is used; any time components are ignored.
Supports ISO 8601 date format: "YYYY-MM-DD" (e.g., "2012-12-21")
Parameters
gregorian
JavaScript Date object or ISO 8601 date string
string | Date
correlation
CorrelationConstant = ...
Correlation constant for alignment (default: 584283 GMT)
Returns
LongCount
A Long Count instance representing the same date
Throws
If the date is invalid or results in a negative Maya Day Number
Example
// From JavaScript Date object
const date = new Date('2012-12-21');
const lc1 = LongCount.fromGregorian(date);
console.log(lc1.toString()); // "13. 0. 0. 0. 0"
// From ISO 8601 date string
const lc2 = LongCount.fromGregorian('2012-12-21');
console.log(lc2.toString()); // "13. 0. 0. 0. 0"
fromJulianDay()
staticfromJulianDay(julianDay,correlation):LongCount
Defined in: lc/long-count.ts:132
Create a Long Count from a Julian Day Number.
Converts a Julian Day Number to the corresponding Maya Long Count date using the specified correlation constant. The Maya Day Number (MDN) is calculated as: MDN = JDN - correlation_constant.
Parameters
julianDay
number
The Julian Day Number to convert
correlation
CorrelationConstant = ...
Correlation constant for alignment (default: 584283 GMT)
Returns
LongCount
A Long Count instance representing the same date
Throws
If the resulting Maya Day Number is negative
Example
const lc = LongCount.fromJulianDay(2456283);
console.log(lc.toString()); // "13. 0. 0. 0. 0"
fromMayanDayNumber()
staticfromMayanDayNumber(mayanDayNumber,correlation?):LongCount
Defined in: lc/long-count.ts:162
Create a Long Count from a Maya Day Number (days since 0.0.0.0.0).
Converts a Maya Day Number (total days elapsed since the creation date) into the corresponding Long Count notation using the mixed-radix system:
- k'in (base 20)
- winal (base 18)
- tun, k'atun, bak'tun (base 20)
Parameters
mayanDayNumber
number
Days elapsed since 0.0.0.0.0 (must be non-negative)
correlation?
Optional correlation constant to set on the result
Returns
LongCount
A Long Count instance representing the date
Throws
If mayanDayNumber is negative
Example
const lc = LongCount.fromMayanDayNumber(1872000); // 13.0.0.0.0
console.log(lc.toString()); // "13. 0. 0. 0. 0"