Der Porhalaan oder Batak-Kalender ist der traditionelle Kalender der auf der indonesischen Insel Sumatra lebenden Batak. Es handelt sich um einen kalkulatorischen Sonnenkalender mit 12 Monaten zu je 30 Tagen und einem gelegentlichen Schaltmonat. Er wird auch „Zauberkalender“ genannt, da er dazu dient, wenig Glück verheißende Tage von günstigeren zu unterscheiden. Zur Zeitrechnung selbst wird er nicht verwendet. Das Jahr beginnt an dem Neumond im Mai, an dem das Sternbild Orion im Westen verschwindet und das Sternbild Skorpion im Osten aufsteigt.
Die Führung des Kalenders wird traditionell einer bestimmten Person übertragen, dem sogenannten datu porrusukrusuk (kurz: datu), der somit auch für die Auswahl günstiger Tage für Feste, Beginn einer Unternehmung und ähnlichem zuständig ist. Um das Risiko, durch Fehler in der Kalenderführung versehentlich einen ungünstigen Tag auszuwählen, zu minimieren, werden oft Tage ausgewählt, die in zwei Monaten Glück versprechen, dem vermutlich aktuellen Monat und dem darauf folgenden. Daher findet sich oft noch ein überzähliger 13. Monat im Kalender, der diesem Zweck dient. Ist dieser nicht vorhanden, wird einfach wieder der erste Monat zur Absicherung benutzt. Möglicherweise wurde der 13. Monat auch dazu genutzt, die Differenz zum Sonnenjahr auszugleichen, was aber nicht belegt ist.
Der Porhalaan wird oft als Tabelle aus quadratischen Feldern von 30 Spalten (Tage) zu je 12 oder 13 Zeilen (Monate) auf ein zylinderförmiges Bambusstück geschrieben.
Der datu nutzt zur Kalenderführung ein Stück Büffelrippe, in das zwei Reihen zu je 12 Löchern für die Monate und zwei Reihen zu je 30 Löchern für die Tage gearbeitet sind. Einzelne Tage und Monate werden durch Hindurchfädeln eines Fadens gezählt.