Sembra essere un compito difficile. Secondo this discussion at bytes.com non esiste un modo chiaro per realizzare una conversione corretta al 100%. Ma sembra che abbiano torto quando pensano che il calendario indù abbia solo 364 giorni invece di 365 (o 366 anni bisestili).
Qui è possibile trovare una buona tabella di conversione compresa la gestione degli anni bisestili: http://hinduism.about.com/od/basics/a/monthsdayseras.htm
Se è così facile come scritto lì si può provare qualcosa di simile (codice PHP):
<?php
function convertDateToHinduDate($date) {
$beginningDayOfMonth = array(
1 => 21,
2 => 20,
3 => 22 + (dateIsLeapYear($date) ? -1 : 0), /* 21 in leap years */
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), /* 31 in leap years */
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("d-m-Y", mktime(11, 59, 0, $newMonth, $newDay, $newYear));
}
function dateIsLeapYear($date) {
return date('L', strtotime($date));
}
$date = date("d-m-Y", strtotime('2012-01-28'));
echo 'Date: ', $date, ' (is leap year: ', dateIsLeapYear($date) ? 'yes' : 'no', ')<br />';
echo 'Converted Hindu date: ', convertDateToHinduDate($date);
?>
uscita di questo codice:
Date: 28-01-2012 (is leap year: yes)
Converted Hindu date: 07-11-2068
Ma secondo la calcolatrice di this Java applet, dovrebbe essere 2068/05/11 anziché 2068/07/11. Quindi, mancano ancora alcune regole di conversione. Forse puoi darmi qualche altra informazione in modo da poter correggere il codice qui sopra.
Si prega di fornire valori di esempio come si dovrebbe esprimere una data (timestamp) quando lo si scrive * calendario indù *-stile. – hakre
Da giorno, mese, anno per giorno, mese, anno è sufficiente per la nostra applicazione. –
Non è quello che volevo sapere. Basta dare più esempi, data indù a sinistra, la data gregoriana sulla destra. Voglio solo sapere che cosa è quel calendario indù quando i valori della data sono espressi su un sito web. – hakre