>> * Jalali, a Gregorian to Jalali and inverse date convertor >> * Copyright (C) 2001, 2002 Roozbeh Pournader <roozbeh@farsiweb.info> >> * Copyright (C) 2001, 2002 Mohammad Toossi <mohammad@bamdad.org> >> * >> * This program is free software; you can redistribute it and/or >> * modify it under the terms of the GNU Lesser General Public >> * License as published by the Free Software Foundation; either >> * version 2.1 of the License, or (at your option) any later version. >> * >> * This program is distributed in the hope that it will be useful, >> * but WITHOUT ANY WARRANTY; without even the implied warranty of >> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >> * Lesser General Public License for more details. >> * >> * You can receive a copy of GNU Lesser General Public License at the >> * World Wide Web address <http://www.gnu.org/licenses/lgpl.html>. >> * >> * For licensing issues, contact The FarsiWeb Project Group, >> * Computing Center, Sharif University of Technology, >> * PO Box 11365-8515, Tehran, Iran, or contact us the >> * email address <FWPG@sharif.edu>. >> */ >> >>* Changes: >> * >> * 2002-Feb-19: >> * Added PHP header and tailer >> * 2002-Jan-28: >> * First LGPL release >> */ >> >> >> >> >> >>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 >> >> >> >>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 >>>>Not sure at all if this coverts dates right :-)