This seems to be a difficult task. According to this discussion on bytes.com there is no clear way to perform a 100% correct conversion. But it seems that they are mistaken in believing that the Hindu calendar has only 364 days instead of 365 (or 366 in leap years).
You can find a good conversion table here, including leap year processing: http://hinduism.about.com/od/basics/a/monthsdayseras.htm
If it is as simple as written there, you can try something like this (php code):
<?php function convertDateToHinduDate($date) { $beginningDayOfMonth = array( 1 => 21, 2 => 20, 3 => 22 + (dateIsLeapYear($date) ? -1 : 0), 4 => 21, 5 => 22, 6 => 22, 7 => 23, 8 => 23, 9 => 23, 10 => 23, 11 => 22, 12 => 22, ); $daysOfHinduMonth = array( 1 => 30 + (dateIsLeapYear($date) ? 1 : 0), 2 => 31, 3 => 31, 4 => 31, 5 => 31, 6 => 31, 7 => 30, 8 => 30, 9 => 30, 10 => 30, 11 => 30, 12 => 30, ); $day = (int) date('d', strtotime($date)); $month = (int) date('m', strtotime($date)); $year = (int) date('Y', strtotime($date)); $monthBefore = $day < $beginningDayOfMonth[$month]; $yearBefore = $month < 3 || ($month == 3 && $day < $beginningDayOfMonth[3]); $newYear = $year + 57 + ($yearBefore ? -1 : 0); $newMonth = $month - 2 + ($monthBefore ? -1 : 0); if($newMonth < 1) $newMonth = 12 + $newMonth; $newDay = $day - $beginningDayOfMonth[$month]; if($newDay < 1) $newDay = $daysOfHinduMonth[$newMonth] + $newDay; return date("dmY", mktime(11, 59, 0, $newMonth, $newDay, $newYear)); } function dateIsLeapYear($date) { return date('L', strtotime($date)); } $date = date("dmY", strtotime('2012-01-28')); echo 'Date: ', $date, ' (is leap year: ', dateIsLeapYear($date) ? 'yes' : 'no', ')<br />'; echo 'Converted Hindu date: ', convertDateToHinduDate($date); ?>
The output of this code is:
Date: 28-01-2012 (is leap year: yes) Converted Hindu date: 07-11-2068
But according to the calculator this Java applet , it should be 05-11-2068 instead of 07-11-2068. So there are still some conversion rules. Perhaps you can give me more information so that I can fix the code above.