Last active
August 29, 2015 14:04
-
-
Save zumoshi/8d4e3d433fb0f068ca8c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * Algoritm from : https://gist.github.com/reza-farhadian/9807316 | |
| * Georgian To Jalali Programming Algorithm | |
| * By Reza Farhadian <[email protected]> | |
| */ | |
| function g2j(timestamp){ | |
| // G = ~~(Georgian) | |
| // J = ~~(Jalali) | |
| var G_Y = ~~(new Date(timestamp*1000).getFullYear()) | |
| var G_M = ~~(new Date(timestamp*1000).getMonth()) | |
| var G_D = ~~(new Date(timestamp*1000).getDate()) | |
| var G_DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] | |
| var J_DAYS_IN_MONTH = [31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29] | |
| var GY = ~~(G_Y - 1600) | |
| var GM = ~~(G_M - 1) | |
| var GD = ~~(G_D - 1) | |
| var G_DAY_NO = ~~(365 * GY + ((GY + 3) / 4) - ((GY + 99) / 100) + ((GY + 399) / 400)) | |
| for (var i =0 ;i < GM ;++i) | |
| {G_DAY_NO += G_DAYS_IN_MONTH[i]} | |
| if (GM < 1 && ((GY % 4 === 0 && GY % 100 != 0) || (GY % 400 == 0))) | |
| G_DAY_NO++ | |
| G_DAY_NO += GD | |
| var J_DAY_NO = ~~(G_DAY_NO - 79) | |
| var J_NP = ~~(J_DAY_NO / 12053) | |
| J_DAY_NO = ~~(J_DAY_NO % 12053) | |
| var JY = ~~(979 + 33 * J_NP + 4 * (J_DAY_NO / 1461)) | |
| J_DAY_NO %= 1461 | |
| if (J_DAY_NO >= 366) | |
| {JY += (J_DAY_NO - 1) / 365 | |
| J_DAY_NO = ~~((J_DAY_NO - 1) % 365)} | |
| for (i = 0;i < 11 && J_DAY_NO >= J_DAYS_IN_MONTH[i] ;++i) | |
| {J_DAY_NO -= J_DAYS_IN_MONTH[i]} | |
| var JM = ~~(i+1) | |
| var JD = ~~(J_DAY_NO+1) | |
| // JY => Jalali Year | |
| // JM => Jalali Month | |
| // JD => Jalali Day | |
| return ~~JY+'/'+JM+'/'+~~JD | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * Georgian To Jalali Programming Algorithm | |
| * By Reza Farhadian <[email protected]> | |
| */ | |
| // G = Georgian | |
| // J = Jalali | |
| [Int] G_Y = // A simple Georgian year | |
| [Int] G_M = // A simple Georgian month | |
| [Int] G_D = // A simple Georgian day | |
| [Array] G_DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] | |
| [Array] J_DAYS_IN_MONTH = [31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29] | |
| [Int] GY = G_Y - 1600 | |
| [Int] GM = G_M - 1 | |
| [Int] GD = G_D - 1 | |
| [Int] G_DAY_NO = 365 * GY + ((GY + 3) / 4) - ((GY + 99) / 100) + ((GY + 399) / 400); | |
| for (i = 0; i < GM; ++i) | |
| G_DAY_NO += G_DAYS_IN_MONTH[i] | |
| if (GM < 1 && ((GY % 4 === 0 && GY % 100 != 0) || (GY % 400 == 0))) | |
| G_DAY_NO++ | |
| G_DAY_NO += GD | |
| [Int] J_DAY_NO = G_DAY_NO - 79 | |
| [Int] J_NP = J_DAY_NO / 12053 | |
| J_DAY_NO = J_DAY_NO % 12053 | |
| [Int] JY = 979 + 33 * J_NP + 4 * (J_DAY_NO / 1461) | |
| J_DAY_NO %= 1461; | |
| if (J_DAY_NO >= 366) | |
| JY += (J_DAY_NO - 1) / 365 | |
| J_DAY_NO = (J_DAY_NO - 1) % 365 | |
| for (i = 0; i < 11 && J_DAY_NO >= J_DAYS_IN_MONTH[i]; ++i) | |
| J_DAY_NO -= J_DAYS_IN_MONTH[i]; | |
| [Int] JM = i+1; | |
| [Int] JD = J_DAY_NO+1; | |
| // JY => Jalali Year | |
| // JM => Jalali Month | |
| // JD => Jalali Day |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment