Click here to Skip to main content
15,899,937 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
Hi guys

i need to convert below code ( php base ) to java syntax or vb.net . any idea ? thank you

PHP
<?php

// This class Convert Hijri date to Gregorian Date & vise versa, made by Layth A. Ibraheeim - 24-2-2011
// to test if the results are ok, please visit (http://www.oriold.uzh.ch/static/hegira.html)..

class Hijri_GregorianConvert
{
	var $Day;
	var $Month;
	var $Year;


	function intPart($floatNum)
	{
		if ($floatNum< -0.0000001)
		{
			return ceil($floatNum-0.0000001);
		}
		return floor($floatNum+0.0000001);
	}

	function ConstractDayMonthYear($date,$format) // extract day, month, year out of the date based on the format.
	{
		$this->Day="";
		$this->Month="";
		$this->Year="";

		$format=strtoupper($format);
		$format_Ar= str_split($format);
		$srcDate_Ar=str_split($date);

		for ($i=0;$iDay.=$srcDate_Ar[$i];
					break;
				case "M":
					$this->Month.=$srcDate_Ar[$i];
					break;
				case "Y":
					$this->Year.=$srcDate_Ar[$i];
					break;
			}
		}

	}


	function HijriToGregorian($date,$format) // $date like 10121400, $format like DDMMYYYY, take date & check if its hijri then convert to gregorian date in format (DD-MM-YYYY), if it gregorian the return empty;
	{

		$this->ConstractDayMonthYear($date,$format);
		$d=intval($this->Day);
		$m=intval($this->Month);
		$y=intval($this->Year);

		if ($y<1700)
		{

		$jd=$this->intPart((11*$y+3)/30)+354*$y+30*$m-$this->intPart(($m-1)/2)+$d+1948440-385;

		if ($jd> 2299160 )
		{
			$l=$jd+68569;
			$n=$this->intPart((4*$l)/146097);
			$l=$l-$this->intPart((146097*$n+3)/4);
			$i=$this->intPart((4000*($l+1))/1461001);
			$l=$l-$this->intPart((1461*$i)/4)+31;
			$j=$this->intPart((80*$l)/2447);
			$d=$l-$this->intPart((2447*$j)/80);
			$l=$this->intPart($j/11);
			$m=$j+2-12*$l;
			$y=100*($n-49)+$i+$l;
		}
		else
		{
			$j=$jd+1402;
			$k=$this->intPart(($j-1)/1461);
			$l=$j-1461*$k;
			$n=$this->intPart(($l-1)/365)-$this->intPart($l/1461);
			$i=$l-365*$n+30;
			$j=$this->intPart((80*$i)/2447);
			$d=$i-$this->intPart((2447*$j)/80);
			$i=$this->intPart($j/11);
			$m=$j+2-12*$i;
			$y=4*$k+$n+$i-4716;
		}

		if ($d<10)
			$d="0".$d;

		if ($m<10)
			$m="0".$m;

		return $d."-".$m."-".$y;
		}
		else
			return "";
	}



	function GregorianToHijri($date,$format) // $date like 10122011, $format like DDMMYYYY, take date & check if its gregorian then convert to hijri date in format (DD-MM-YYYY), if it hijri the return empty;
	 {
		$this->ConstractDayMonthYear($date,$format);
		$d=intval($this->Day);
		$m=intval($this->Month);
		$y=intval($this->Year);

		if ($y>1700)
		{
		if (($y>1582)||(($y==1582)&&($m>10))||(($y==1582)&&($m==10)&&($d>14)))
		{
			$jd=$this->intPart((1461*($y+4800+$this->intPart(($m-14)/12)))/4)+$this->intPart((367*($m-2-12*($this->intPart(($m-14)/12))))/12)-$this->intPart((3*($this->intPart(($y+4900+$this->intPart(($m-14)/12))/100)))/4)+$d-32075;
		}
		else
		{
			$jd = 367*$y-$this->intPart((7*($y+5001+$this->intPart(($m-9)/7)))/4)+$this->intPart((275*$m)/9)+$d+1729777;
		}

		$l=$jd-1948440+10632;
		$n=$this->intPart(($l-1)/10631);
		$l=$l-10631*$n+354;
		$j=($this->intPart((10985-$l)/5316))*($this->intPart((50*$l)/17719))+($this->intPart($l/5670))*($this->intPart((43*$l)/15238));
		$l=$l-($this->intPart((30-$j)/15))*($this->intPart((17719*$j)/50))-($this->intPart($j/16))*($this->intPart((15238*$j)/43))+29;
		$m=$this->intPart((24*$l)/709);
		$d=$l-$this->intPart((709*$m)/24);
		$y=30*$n+$j-30;

		if ($d<10)
			$d="0".$d;

		if ($m<10)
			$m="0".$m;

		return $d."-".$m."-".$y;
		}
		else
		return "";


	}

}



?>
Posted
Comments
[no name] 16-Aug-14 9:40am    
"any idea?", sure. One idea is to learn php, java and/or VB then take your code and translate it. I don't see why you would want to though. Why don't you simply find the same functionality in existing java or VB code?

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900