Roman Pavlov
and 1 contributors


Date::Indiction - Compute a year's indiction as used in old Russian chronicles


  use Date::Indiction 'Byzantine'; # or 'AM' or 'byzantine' (default)
  use Date::Indiction;             # the same
  use Date::Indiction qw();        # the same, do not import 'indiction'
  use Date::Indiction 'Christian'; # or 'AD' or 'christian'

  $indict = indiction($year, $month);
  $indict = indiction($year);

  $indict = indiction(2016, 12); # December 2016 AD


Indiction (called indict in Russian chronicles) is the number of the year in a 15-year cycle, starting from September 1, 312 AD. It can be calculated for either Byzantine year (Anno Mundi, AM, old Russian style with the epoch on March 1, 5508 BCE) or Christian year (Anno Domini, AD). The formulae are, respectively,

    I = AM % 15

    I = (AD + 3) % 15

adding 1 for dates after the 1st of September since indictions change on this date. (Other counting bases did exist in Western Europe, however not covered by this module.) See Klimishin I.A. "Calendar and Chronology". Moscow, Nauka, 1985, pp. 82-85.

The module uses byzantine aera by default. Christian aera can be requested explicitly on module load or set using set_aera function.

Setting 'christian' is equal to 'AD' and 'byzantine' to 'AM'. Keywords 'christian' and 'byzantine' are case-insensitive.

Month from January to December are numbered from 1 to 12 respectively for both aerae, although in the Byzantine aera March is the month number 1, etc. This can be changed in future in favour of more human-friendly strings like "Jan" or "January".


This module does not check the correctness of year and month numbers! (This can be added in future releases though.)

Module's functions aren't intended to be used as class methods, so you cannot call them like Date::Indiction->set_aera(...). Obviously OO interface is not supported either.


indiction is exported by default. This is done only to provide a simpler syntax of module loading and common usage cases:

    use Date::Indiction 'Byzantine';

instead of

    use Date::Indiction qw(Byzantine indiction);


    use Date::Indiction qw(indiction);

However this can be changed in future. Try

    use Date::Indiction qw();

to avoid polluting your namespace with indiction.


Date::GoldenNumber - another West European medieval dating system

Date::Vruceleto - another old Russian dating system


Roman Pavlov <>


Copyright (C) 2016-2018 Roman Pavlov

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