Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Help for convert from PHP
Message
From
21/11/2011 09:44:20
Metin Emre
Ozcom Bilgisayar Ltd.
Istanbul, Turkey
 
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
01529341
Message ID:
01529371
Views:
30
Thank you!.. Calculation is not perfect (sample it makes mistake with 05-09-1996) but your convert is perfect... ;)

>O!
>Of course.
>I asked Google and found it for PHP :-)
>Here the full version. Have backward also :-)
>
>
>CLEAR 
>
>DIMENSION 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] = 31
>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
>
>j_month_name    = ["Farvardin", "Ordibehesht", "Khordad", "Tir", "Mordad", "Shahrivar", "Mehr", "Aban", "Azar", "Dey", "Bahman", "Esfand"]
>
>
> ooo = gregorian_to_jalali(2012, 1, 21)
> ? ooo.Year, ooo.Month, ooo.Day
> ooo = jalaliToGregorian( ooo.Year, ooo.Month, ooo.Day)
>? ooo.Year, ooo.Month, ooo.Day
>
>function div(a, b)
>return INT(a / b)
>  
>function gregorian_to_jalali(g_y, g_m, g_d)
>   
>   gy = g_y-1600
>   gm = g_m-1
>   gd = g_d-1
>
>   g_day_no = 365*gy+div(gy+3,4)-div(gy+99,100)+div(gy+399,400);
>
>   for i=1 TO gm
>      g_day_no = g_day_no + g_days_in_month[i]
>   NEXT
>   
>   if (gm > 1 AND ((gy%4==0 AND gy%100!=0) OR (gy%400==0)))
>      g_day_no = g_day_no + 1
>   ENDIF
>   g_day_no = g_day_no + gd
> 
>   j_day_no = g_day_no-79
> 
>   j_np = div(j_day_no, 12053)
>   j_day_no = j_day_no % 12053
> 
>   jy = 979+33*j_np+4*div(j_day_no,1461)
>
>   j_day_no = j_day_no % 1461
> 
>   if (j_day_no >= 366)
>      jy = jy + div(j_day_no-1, 365)
>      j_day_no = (j_day_no-1)%365
>   ENDIF
> 
>   for i = 1 TO 11
>      IF j_day_no >= j_days_in_month[i]
>         j_day_no = j_day_no - j_days_in_month[i]
>      ELSE
>         EXIT
>      ENDIF
>   NEXT
>   jm = i
>   jd = j_day_no+1
>
>   oReturn = CREATEOBJECT([EMPTY])
>   ADDPROPERTY(oReturn,[Year], jy)
>   ADDPROPERTY(oReturn,[Month], jm)
>   ADDPROPERTY(oReturn,[Day], jd)
>RETURN oReturn
>
>
>******** 
>FUNCTION jalaliToGregorian(j_y, j_m, j_d) 
>   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) &&/* 146097 = 365*400 + 400/4 - 400/100 + 400/400 */ 
>   g_day_no = g_day_no % 146097
>
>   leap = .t.
>   if (g_day_no >= 36525) &&/* 36525 = 365*100 + 100/4 */ 
>      g_day_no = g_day_no - 1
>      gy = 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 = g_day_no + 1
>      else 
>         leap = .f.
>      ENDIF   
>   ENDIF 
>
>   gy = gy + 4*div(g_day_no, 1461) && /* 1461 = 365*4 + 4/4 */ 
>   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 
>   ENDIF
>
>   i = 1
>   DO WHILE g_day_no >= g_days_in_month[i] + IIF(i == 2 AND leap, 1, 0)
>      g_day_no = g_day_no - g_days_in_month[i] + IIF(i == 2 AND leap, 1, 0)
>      i = i + 1
>   ENDDO
>   gm = i 
>   gd = g_day_no+1 
>   oReturn = CREATEOBJECT([EMPTY])
>   ADDPROPERTY(oReturn,[Year], gy)
>   ADDPROPERTY(oReturn,[Month], gm)
>   ADDPROPERTY(oReturn,[Day], gd)
>   
>RETURN oReturn
>
>
>And again NOT TESTED!!!!!
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform