View on
MetaCPAN is shutting down
For details read Perl NOC. After June 25th this page will redirect to
જલધર હ. વ્યાસ > DateTime-Indic-0.1 > DateTime::Indic::Chandramana



Annotate this POD


New  1
Open  1
View/Report Bugs
Module Version: 0.2   Source   Latest Release: DateTime-Indic-0.2


DateTime::Indic::Chandramana - Base class for Indian luni-solar calendars


Version 0.2


This class is meant to be subclassed not used directly.


A module that implements an Indian chandramAna (luni-solar,) nirAyana (sidereal,) khagolasiddha (heliocentric,) and spaShTa (based on the true times of astronomical events) calendar. The calendar described in this module isn't actually used as-is though; rather it is a basis for actual Indian luni-solar calendars which are implemented in other modules in the DateTime::Indic collection.


Note: In this document, Sanskrit words are transliterated using the ITRANS scheme.

The Year (varSha)

All chandramAna calendars have as their epoch, the first day of the current kali yuga which is equivalent to Friday, January 23, -3101 BC in the proleptic Gregorian calendar. sidereal years (the time it takes for the sun to make one pass through the entire zodiac) and days are counted off from this date to perform calculations but the actual calendars in use, employ different eras to number years.

The Lunar Month (mAsa)

chandramAna calendars consists of 12 lunar months (mAsa). A mAsa is defined as one complete phase cycle of the Moon. Some calendars use amAsanta mAsa which end on the day of the new moon. Others use pUrNimAnta mAsa which end on the day of the full moon.

The Sanskrit names of the mAsa are:

  1  chaitra       7  ashvina 
  2  vaishAkha     8  kArtika
  3  jyeShTa       9  mArgashIrasa 
  4  AShADha       10 pauSha
  5  shrAvaNa      11 mAgha
  6  bhAdrapada    12 phAlguna

Some calendars start from a mAsa other than chaitra. Nevertheless chaitra would still be considered the "first" month despite not being the first month of the year.

Leap and Omitted mAsa (adhikamAsa and kShayamAsa)

Because 12 mAsa can be a little bit more or less than a sidereal year, it is sometimes necessary to add or subtract a mAsa to keep the two synchronized. When the Sun spends an entire mAsa without entering another zodiacal sign, the mAsa is called adhika ("leap") and it has the same name as the following month. Very rarely, when the Sun enters two zodiacal signs in what would have been one mAsa, it is kShaya (omitted altogether.)

Waxing and Waning Halves (pakSha)

Each masa is divided into two halves. The shuklapakSha ("bright part") is when the Moon is waxing, culminating in the full moon. The kR^iShNapakSha ("dark half") is when the Moon is waning, culminating in the new moon. Therefore in a pUrNimAnta mAsa, the kR^ishNapakSha is first, followed by the shuklapakSha, whereas in an amAsanta mAsa, the shuklapakSha is first, followed by the kR^iShNapakSha.

Lunar Day (tithi)

Each pakSha consists of tithis which are equivalent to a 12 degree increments of increase or decrease in the phase of the Moon. The tithis of each pakSha are named and numbered as follows:

  1  pratipadA ("beginning")
  2  dvitIyA ("2nd")
  3  tR^itIya ("3rd")
  4  chaturthI ("4th")
  5  paMchamI ("5th")
  6  ShaShTI ("6th")
  7  saptamI ("7th")
  8  aShTamI ("8th")
  9  navamI  ("9th")
  10 dashamI ("10th")
  11 ekAdashI ("11th")
  12 dvAdashI ("12th")
  13 trayodashI ("13th")
  14 chaturdashI ("14th")
  15 pUrNimA ("full moon")
  30 amAvasya ("new moon")

The tithi of a particular day is the one that prevails at sunrise on that day. (This is called the uditatithi.)

Leap and Omitted tithi (adhikatithi and kShayatithi)

Because the orbital speed of the Moon is not constant, sometimes a tithi can start and end entirely within one day. In that case it is called a kShayatithi and it is omitted from the calendar. Other times, one tithi stretches over two sunrises. This is called a vR^iddha ("large") tithi. In this case, both days have the same number and name. The first is prefixed adhika or "leap".


In order to know the correct chandramAna date, you have to know the time of sunrise and this varies depending on where on Earth you are. In this module we use the modern geospatial coordinate system where the prime meridian passing through Greenwich is 0 degrees longitude and the equator is 0 degrees latitude. However traditionally the temple of mahAkAla (Shiva as the embodiment of Time) in Avantika (modern Ujjain, Madhya Pradesh) was considered the prime meridian.



These methods are either required by the DateTime API or copied from it.

new (%args)

Constructs a new instance of this class. The following arguments can be given:


Returns a copy of the object.


Builds a DateTime::Calendar::Chandramana object from another DateTime object. This function takes an object parameter and optionally locale. For example:


This function takes one or more parameters consisting of strings containing special specifiers. For each such string it will return a string formatted according to the specifiers, er, specified. The following specifiers are allowed in the format string:

Any method name may be specified using the format %{method} name where "method" is a valid DateTime::Calendar::Chandramana object method.


Returns a three-element array containing the current UTC RD days, seconds, and nanoseconds. See DateTime for more details.


These methods return various parts of a chandramAna date.


Returns the varSha.


Returns 1 if this is an adhikamAsa or 0 if it is not.


Returns the abbreviated adhikamAsa name. (By default 'a '.)


Returns the full adhikamAsa name. (By default 'adhika '.)


Returns the mAsa as a number from 1 to 12


Returns the abbreviated mAsa name.


Returns the full mAsa name.


Returns 1 if this is the kR^iShNapakSha or 0 if it is the shuklapakSha.


Returns the abbreviated pakSha name. By default either 'shu' for shukla or 'kR^i' for kR^iShNa.


Returns the full paksha name. By default either shukla or kR^iShNa.


Returns 1 if this is an adhikatithi or 0 if it is not.


Returns the abbreviated adhikatithi name. (By default 'a '.)


Returns the full adhikatithi name. (By default 'adhika '.)


Returns the tithi as a decimal number.


Returns the abbreviated tithi name.


Returns the full tithi name.


Please report any bugs or feature requests through the web interface at <>. I will be notified, and then you’ll automatically be notified of progress on your bug as I make changes. Please do not use!.


You can find documentation for this module with the perldoc command.

    perldoc DateTime::Indic::Chandramana

Support requests for this module and questions about panchanga ganita should be sent to the email list. See for more details.

Questions related to the DateTime API should be sent to the email list. See for more details.

You can also look for information at:




Jaldhar H. Vyas, <jaldhar at>


Copyright (C) 2009, Consolidated Braincells Inc.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

The full text of the license can be found in the LICENSE file included with this distribution.

syntax highlighting: