Core — Calendario 260 (alias "Tzolkin")¶
Módulo del Core que, dado un instant gregoriano (ISO), calcula:
- kin ∈ [1..260]
- tono ∈ [1..13]
- sello ∈ [1..20]
Correlaciones (configurables por entorno)¶
La correlación activa se define en pit-api con la variable:
CAL260_CORRELATION = ds | gmt
-
ds (Dreamspell) — ancla:
JDN = 2447003(Kin 1 en 1987-07-26)
Fórmula:
kin = ((JDN - 2447003) mod 260) + 1 -
gmt (Tradicional GMT 584283) — ancla:
JDN = 584283, offset+159
Fórmula:
kin = ((JDN - 584283 + 159) mod 260) + 1
Cambiar la correlación no requiere deploy de código; basta con actualizar la variable y esperar el redeploy de Cloudflare Pages para
pit-api.
Cálculo (JDN)¶
- Normalizar
instanta fecha UTC (YYYY-MM-DD). - Calcular JDN entero del día civil.
- Aplicar la fórmula según
dsogmt. - Derivar:
tono = ((kin - 1) mod 13) + 1 sello = ((kin - 1) mod 20) + 1
API de Conversión¶
POST https://pit-api.pages.dev/api/v1/convert
Headers:
- Content-Type: application/json
- Accept: application/vnd.pit.v1+json
- x-pit-key: <tu_clave> (si está protegido)
Body:
{ "from": "gregorian", "to": "calendario-260", "instant": "YYYY-MM-DDT00:00:00Z" }
Respuesta (ejemplo)
{
"value": {
"kin": 158,
"tono": { "id": 2, "nombre": "Lunar", "clave": "lunar" },
"sello": { "id": 18, "nombre": "Espejo", "clave": "espejo" },
"meta": {
"provisional": false,
"correlation": "ds",
"anchorJDN": 2447003,
"offset": 0,
"formula": "JDN",
"correlationSource": "env"
}
},
"meta": { "module": "calendario-260", "versions": { "api": "v1", "module": "1.0.0" } }
}
Ejemplo canónico (validado por CI)¶
Fecha: 2025-09-21
- ds →
kin = 158(Tono 2, Sello 18) - gmt →
kin = 137(Tono 7, Sello 17)
El pipeline CI de pit-api verifica automáticamente este caso según la correlación activa.
Contrato del Módulo (Core)¶
- Entrada (convert):
{ from: "gregorian", to: "calendario-260", instant, tz? } - Salida:
{ kin, tono, sello, meta } metasiempre incluye:correlation,anchorJDN,offset,formula,correlationSource.
Notas¶
- El cálculo usa día civil (UTC), no hora local.
- La lista de tonos y sellos está normalizada (ES) y versionada junto al módulo.