Có vẻ là một nhiệm vụ khó khăn. Theo số this discussion at bytes.com, không có cách nào rõ ràng để thực hiện chuyển đổi chính xác 100%. Nhưng có vẻ như họ sai khi họ cho rằng lịch Hindu chỉ có 364 ngày thay vì 365 (hoặc 366 năm nhuận).
đây bạn có thể tìm thấy một bảng chuyển đổi tốt bao gồm cả việc xử lý năm nhuận: http://hinduism.about.com/od/basics/a/monthsdayseras.htm
Nếu đó là dễ dàng như viết đó bạn có thể thử một cái gì đó như thế này (mã 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);
?>
đầu ra của mã này:
Date: 28-01-2012 (is leap year: yes)
Converted Hindu date: 07-11-2068
Tuy nhiên, theo tính của this Java applet, nó phải là 2068/05/11 thay vì 2068/07/11. Vì vậy, vẫn còn một số quy tắc chuyển đổi bị thiếu. Có lẽ bạn có thể cho tôi thêm một số thông tin để tôi có thể sửa mã ở trên.
Vui lòng cung cấp các giá trị mẫu làm cách nào bạn thể hiện ngày (dấu thời gian) khi bạn viết ngày * kiểu lịch Hindu *. – hakre
Từ ngày, tháng, năm này sang ngày khác, tháng, năm là đủ cho ứng dụng của chúng tôi. –
Đó không phải là điều tôi muốn biết. Chỉ cần đưa ra nhiều ví dụ, ngày hindu ở bên trái, theo ngày gregorian bên phải. Tôi chỉ muốn biết lịch hindu đó là gì khi các giá trị ngày tháng được thể hiện trên một trang web. – hakre