Ошибка после преобразования PHP-кода в Javascript

Вопрос:

У меня была функция PHP для преобразования григорианского календаря в календарь Jalali. Я преобразовал функцию PHP в эту функцию JavaScript онлайн-конвертером, но он показывает мне две ошибки во время работы.

Посмотрите на этот код. Это показывает мне две ошибки.

1- Uncaught SyntaxError: Неожиданный идентификатор

2- Uncaught ReferenceError: gregorian_to_jalali не определен

Я не могу найти проблему.

<script>
//Function to convert Gregorian calendar to Jalili calendar to save it in the database.
function gregorian_to_jalali(g_y, g_m, g_d, mod) {
if (typeof mod === "undefined") {
mod = '';
}

var d_4 = g_y % 4;
var g_a = {
0: 0,
1: 0,
2: 31,
3: 59,
4: 90,
5: 120,
6: 151,
7: 181,
8: 212,
9: 243,
10: 273,
11: 304,
12: 334
};
var doy_g = g_a[g_m] + g_d;

if (d_4 == 0 AND g_m > 2) {
doy_g++;
}

var d_33 = (((g_y - 16) % 132) * .0305);
var a = (d_33 == 3 OR d_33 < (d_4 - 1) OR d_4 == 0) ? 286 : 287;
var b = ((d_33 == 1 OR d_33 == 2) AND(d_33 == d_4 OR d_4 == 1)) ? 78 : ((d_33 == 3 AND d_4 == 0) ? 80 : 79);

if (((g_y - 10) / 63) == 30) {
a--;
b++;
}

if (doy_g > b) {
var jy = g_y - 621;
var doy_j = doy_g - b;
} else {
jy = g_y - 622;
doy_j = doy_g + a;
}

if (doy_j < 187) {
var jm = ((doy_j - 1) / 31);
var jd = doy_j - (31 * jm++);
} else {
jm = ((doy_j - 187) / 30);
jd = doy_j - 186 - (jm * 30);
jm += 7;
}

return (mod == '') ? {
0: jy,
1: jm,
2: jd
} : jy + "" + mod + "" + jm + "" + mod + "" + jd;
}

Лучший ответ:

Вы используете “AND” и “OR” вместо “&&” и “||” соответственно. Вот ваш код:

function gregorian_to_jalali(g_y, g_m, g_d, mod) {
    if (typeof mod === "undefined") {
        mod = '';
    }

    var d_4 = g_y % 4;
    var g_a = {
        0: 0,
        1: 0,
        2: 31,
        3: 59,
        4: 90,
        5: 120,
        6: 151,
        7: 181,
        8: 212,
        9: 243,
        10: 273,
        11: 304,
        12: 334
    };
    var doy_g = g_a[g_m] + g_d;

    if (d_4 == 0 && g_m > 2) {
        doy_g++;
    }

    var d_33 = (((g_y - 16) % 132) * .0305);
    var a = (d_33 == 3 || d_33 < (d_4 - 1) || d_4 == 0) ? 286 : 287;
    var b = ((d_33 == 1 || d_33 == 2) &&(d_33 == d_4 || d_4 == 1)) ? 78 : ((d_33 == 3 && d_4 == 0) ? 80 : 79);

    if (((g_y - 10) / 63) == 30) {
        a--;
        b++;
    }

    if (doy_g > b) {
        var jy = g_y - 621;
        var doy_j = doy_g - b;
    } else {
        jy = g_y - 622;
        doy_j = doy_g + a;
    }

    if (doy_j < 187) {
        var jm = ((doy_j - 1) / 31);
        var jd = doy_j - (31 * jm++);
    } else {
        jm = ((doy_j - 187) / 30);
        jd = doy_j - 186 - (jm * 30);
        jm += 7;
    }

    return (mod == '') ? {
        0: jy,
        1: jm,
        2: jd
    } : jy + "" + mod + "" + jm + "" + mod + "" + jd;
}

alert(gregorian_to_jalali(2013, 1, 31)[0]); //returns 1391

Оцените статью
TechArks.Ru
Добавить комментарий