Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Help for convert from PHP
Message
De
21/11/2011 08:58:40
Metin Emre
Ozcom Bilgisayar Ltd.
Istanbul, Turquie
 
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Divers
Thread ID:
01529341
Message ID:
01529360
Vues:
25
So can yo convert it too... :)
I converted but it doesn't work good. I did some mistake(s) somewhere... :(

original php:

function jalali_to_gregorian($j_y, $j_m, $j_d) {
$g_days_in_month = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$j_days_in_month = array(31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29);

$jy = $j_y-979;
$jm = $j_m-1;
$jd = $j_d-1;

$j_day_no = 365*$jy + div($jy, 33)*8 + div($jy%33+3, 4);
for ($i=0; $i < $jm; ++$i)
$j_day_no += $j_days_in_month[$i];

$j_day_no += $jd;

$g_day_no = $j_day_no+79;

$gy = 1600 + 400*div($g_day_no, 146097); /* 146097 = 365*400 + 400/4 - 400/100 + 400/400 */
$g_day_no = $g_day_no % 146097;

$leap = true;
if ($g_day_no >= 36525) /* 36525 = 365*100 + 100/4 */
{
$g_day_no--;
$gy += 100*div($g_day_no, 36524); /* 36524 = 365*100 + 100/4 - 100/100 */
$g_day_no = $g_day_no % 36524;

if ($g_day_no >= 365)
$g_day_no++;
else
$leap = false;
}

$gy += 4*div($g_day_no, 1461); /* 1461 = 365*4 + 4/4 */
$g_day_no %= 1461;

if ($g_day_no >= 366) {
$leap = false;

$g_day_no--;
$gy += div($g_day_no, 365);
$g_day_no = $g_day_no % 365;
}

for ($i = 0; $g_day_no >= $g_days_in_month[$i] + ($i == 1 && $leap); $i++)
$g_day_no -= $g_days_in_month[$i] + ($i == 1 && $leap);
$gm = $i+1;
$gd = $g_day_no+1;

return array($gy, $gm, $gd);
}

my converted code:



Lparameters j_y, j_m, j_d

Local g_days_in_month(12),j_days_in_month(12)
g_days_in_month(1)=31
g_days_in_month(2)=28
g_days_in_month(3)=31
g_days_in_month(4)=30
g_days_in_month(5)=31
g_days_in_month(6)=30
g_days_in_month(7)=31
g_days_in_month(8)=31
g_days_in_month(9)=30
g_days_in_month(10)=31
g_days_in_month(11)=30
g_days_in_month(12)=31

j_days_in_month(1)=31
j_days_in_month(2)=21
j_days_in_month(3)=31
j_days_in_month(4)=31
j_days_in_month(5)=31
j_days_in_month(6)=31
j_days_in_month(7)=30
j_days_in_month(8)=30
j_days_in_month(9)=30
j_days_in_month(10)=30
j_days_in_month(11)=30
j_days_in_month(12)=29


jy = j_y-979
jm = j_m-1
jd = j_d-1

j_day_no = 365*jy + div(jy, 33)*8 + div(jy%33+3, 4)
For i=1 To jm
j_day_no = j_day_no +j_days_in_month[i]
Next

j_day_no = j_day_no +jd

g_day_no = j_day_no+79

gy = 1600 + 400*div(g_day_no, 146097)
g_day_no = g_day_no % 146097

leap = .T.
If (g_day_no >= 36525)

g_day_no=g_day_no-1
gy = gy +100*div(g_day_no, 36524)
g_day_no = g_day_no % 36524

If (g_day_no >= 365)
g_day_no=g_day_no+1
Else
leap = .F.
Endif
Endi

gy = gy +4*div(g_day_no, 1461)
g_day_no= g_day_no %1461

If (g_day_no >= 366)
leap = .F.

g_day_no=g_day_no-1
gy = gy +div(g_day_no, 365)
g_day_no = g_day_no % 365
Endi
i=0
* for ($i = 0; $g_day_no >= $g_days_in_month[$i] + ($i == 1 && $leap); $i++)
Do Whil g_day_no >= g_days_in_month[i+1] +Iif((i = 1 And leap),1,0)
g_day_no = g_day_no-g_days_in_month[i+1] +Iif((i = 1 And leap),1,0)
i=i+1
Enddo
gm = i+1
gd = g_day_no+1
Return Date(gy,gm,gd)
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform