Intereting Posts
Возвращаемое значение Javascript из PHP, вызванное XMLHttpRequest Как получить множественные вхождения из многомерного массива? i18n с gettext, но без проблем в локали? Laravel, Faker – Увеличивает сгенерированную датуВремя Генератор сущности Doctrine / Symfony и генерирующий объект из одной таблицы Нельзя просто использовать имя таблицы PostgreSQL («отношения не существует») Как проверить формы в PHP Laravel – многострочные строки и идентификаторы возврата Получение сведений с одной динамической страницы на другую – повторная публикация CakePHP с временной шкалой Twitter, используя twitteroauth, получая curl_init () ошибку? PHP Сделайте что-то, когда сессия истекла RegEx – Как вставить строку перед расширением файла Новое форматирование строки при использовании HTML-файла в виде файла Word? Удаление значений из базы данных MySQL с помощью AJAX без перезагрузки страницы (отредактировано) array_count_values ​​для JavaScript вместо

Преобразование в и из индуистского календаря

Как я могу преобразовать время unix в индуистский календарь в Википедии, а наоборот – в php , Perl или Python или Java ? Я знаю, что могу обратиться к Hebrew и Jewish . Но Hindu не вариант.

Чтобы быть более конкретным, я говорю о индуистском лунном календаре. Следующий веб-сайт работает и делает именно то, что я хочу: http://web.meson.org/calendars/ . Например, он переводит 28-1-2012 (по-григориански) на 5-11-2068 (Hind. Lun.). Как я могу выполнить ту же задачу? И если нет абсолютно никаких сценариев, как я могу написать это сам?

Related of "Преобразование в и из индуистского календаря"

Бумага: индийские календарные вычисления
Предоставляет общий код Lisp в приложении.

В то время как решение Python (или другого языка) может быть написано в соответствии с документом, авторы перечисляют правила календаря в Индии довольно хорошо, поэтому это довольно солидная бумага, если вы хотите рассмотреть вопрос о предоставлении предоставленного Common Lisp кода.

Вы проверяли семейство модулей DateTime-Index-0.1 ? По крайней мере DateTime :: Indic :: Chandramana, похоже, имеет метод преобразования традиционной даты в значения UTC (utc_rd_values).

ОБНОВИТЬ:

Я полагаю, что Calendar :: Saka может быть полезен и для многих пользователей (как я знал, это индийский национальный календарь), в частности, to_gregorian() и from_gregorian() .

Для Python используйте calendar2 (обратите внимание: это не встроенный модуль календаря).

Пример использования:

 >>> from calendar2 import * >>> old_hindu_solar_from_absolute(absolute_from_gregorian(3,1,2012)) (11, 16, 5112) >>> old_hindu_lunar_from_absolute(absolute_from_gregorian(3,1,2012)) (12, 0, 8, 5112) 

Кажется, это трудная задача. Согласно этому обсуждению на bytes.com нет четкого способа выполнить 100% правильное преобразование. Но кажется, что они ошибаются, полагая, что в индуистском календаре всего 364 дня вместо 365 (или 366 в високосные годы).

Здесь вы можете найти хорошую таблицу конверсии, включающую обработку високосных лет: http://hinduism.about.com/od/basics/a/monthsdayseras.htm

Если это так просто, как написано там, вы можете попробовать что-то вроде этого (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("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); ?> 

Вывод этого кода:

 Date: 28-01-2012 (is leap year: yes) Converted Hindu date: 07-11-2068 

Но, согласно калькулятору этого Java-апплета , это должно быть 05-11-2068 вместо 07-11-2068. Итак, все еще есть некоторые правила преобразования. Возможно, вы можете дать мне дополнительную информацию, чтобы я мог исправить код выше.

Я не знаю, правильный ли это подход или нет. Пожалуйста, перейдите на сайт http://calendarhome.com/converter/ и загрузите два файла javascript astro.js и calendar.js и следуйте за событиями по григорианской дате и получите параметры индийской гражданской даты ,