For the purpose of specifying the epochs associated with the mean place of a star, two conventions exist. Both sorts of epoch superficially resemble years AD but are not tied to the civil (Gregorian) calendar; to distinguish them from ordinary calendar-years there is often a ``.0'' suffix (as in ``1950.0''), although any other fractional part is perfectly legal (e.g. 1987.5).
The older system, Besselian epoch, is defined in such a way that its units are tropical years of about 365.2422 days and its timescale is the obsolete Ephemeris Time. The start of the Besselian year is the moment when the ecliptic longitude of the mean Sun is ; this happens near the start of the calendar year (which is why was chosen).
The new system, Julian epoch, was adopted as part of the IAU 1976 revisions (about which more will be said in due course) and came formally into use at the beginning of 1984. It uses the Julian year of exactly 365.25 days; Julian epoch 2000 is defined to be 2000 January 1.5 in the TT timescale.
For specifying mean places, various standard epochs are in use, the most common ones being Besselian epoch 1950.0 and Julian epoch 2000.0. To distinguish the two systems, Besselian epochs are now prefixed ``B'' and Julian epochs are prefixed ``J''. Epochs without an initial letter can be assumed to be Besselian if before 1984.0, otherwise Julian. These details are supported by the SLALIB routines sla_DBJIN (decodes numbers from a character string, accepting an optional leading B or J), sla_KBJ (decides whether B or J depending on prefix or range) and sla_EPCO (converts one epoch to match another).
SLALIB has four routines for converting Besselian and Julian epochs into other forms. The functions sla_EPB2D and sla_EPJ2D convert Besselian and Julian epochs into MJD; the functions sla_EPB and sla_EPJ do the reverse. For example, to express B1950 as a Julian epoch:
DOUBLE PRECISION sla_EPJ,sla_EPB2D : WRITE (*,'(1X,''J'',F10.5)') sla_EPJ(sla_EPB2D(1950D0))
(The answer is J1949.99979.)
SLALIB --- Positional Astronomy Library