How BS to AD conversion actually works (and why it's tricky)

Behind every Nepali date converter is a hand-curated table of month lengths. Learn the algorithm, the data sources, and where naive math goes wrong.

September 22, 2025 · 5 min read

The naive (and wrong) approach

People often try to convert BS to AD with a simple formula like AD = BS - 56 or AD = BS - 57. This will land you in the right year roughly 70% of the time and the wrong year the other 30% — because the BS new year falls in mid-April, not in January.

The right approach

Reliable conversion uses three pieces of data:

  1. An epoch date: a known mapping between a BS date and its AD equivalent. We use 1 Baisakh 1970 BS = 13 April 1913 AD.
  2. A month-length table: how many days each Nepali month has, for every year in range. These are not formulaic — they are determined annually and published by Nepal's Calendar Determination Committee.
  3. A simple day arithmetic step: count days from the epoch to the target BS date, then add that many days to the epoch's AD date.

Why we need a table

The Bikram Sambat calendar is sidereal solar, meaning month boundaries are tied to the sun crossing zodiac signs. Because the sun's transit doesn't perfectly match calendar days, month lengths shift slightly year to year. There is no closed-form formula that gives the exact length of, say, Baisakh 2087 BS — you have to consult the official patro.

What our converter does

The npdates BS to AD converter uses an internal table covering BS years 1970 through 2099. For any input date we (a) validate the day is within that month's published length, (b) sum the days from the epoch, and (c) add to the AD epoch. The result is correct to the day, including weekday.