Transdate provides a lunardate class, which interface is compatible to a built-in datetime.date but supports additional methods for the Asian lunisolar calendar.

Interface summary:

lunardate.fromsolardate(date) class method and tosolardate() method converts a solar date to a lunar date and vice versa.

class method and method converts a solar date to a lunar date and vice versa. lunaryear , lunarmonth , lunarday properties are direct analogues to year , month , day .

, , properties are direct analogues to , , . lunerleap property returns True when the month is intercalary. For example, April 2012 was followed by intercalary April 2012, and then May 2012. Therefore this additional month will be marked via lunarleap property.

property returns True when the month is intercalary. For example, April 2012 was followed by intercalary April 2012, and then May 2012. Therefore this additional month will be marked via property. strftime method is extended to support %LY / %LC / %Ly / %Lm / %Ld / %Le / %Lj sequences, which are analogous to %Y / %C / %y / %m / %d / %e / %j sequences respectively.

The dataset is derived from Korea Astronomy and Space Science Institute, and covers from January 1881 to December 2050 (in the lunar date). Warning: Various Asian countries use slightly different rules to determine intercalary months, however, so these rules may diverge from each other. The first known date affected by this divergence is July 2033, and thereafter only the Korean rule applies.