Javascript 将公历日期转换为jalali
我有这样一个函数:Javascript 将公历日期转换为jalali,javascript,date,jalali-calendar,Javascript,Date,Jalali Calendar,我有这样一个函数: var date = new Date(); var d = date.getDate(); var m = date.getMonth(); var y = date.getFullYear(); var hdr = {}; 还有一个函数可以转换它: function gregorian_to_jalali($g_y,$g_m,$g_d,$mod=''){ $g_y=tr_num($g_y); $g_m=tr_num($g_m); $g_d=tr_num($g_
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
var hdr = {};
还有一个函数可以转换它:
function gregorian_to_jalali($g_y,$g_m,$g_d,$mod=''){
$g_y=tr_num($g_y); $g_m=tr_num($g_m); $g_d=tr_num($g_d);
$d_4=$g_y%4;
$g_a=array(0,0,31,59,90,120,151,181,212,243,273,304,334);
$doy_g=$g_a[(int)$g_m]+$g_d;
if($d_4==0 and $g_m>2)$doy_g++;
$d_33=(int)((($g_y-16)%132)*.0305);
$a=($d_33==3 or $d_33<($d_4-1) or $d_4==0)?286:287;
$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((int)(($g_y-10)/63)==30){$a--;$b++;}
if($doy_g>$b){
$jy=$g_y-621; $doy_j=$doy_g-$b;
}else{
$jy=$g_y-622; $doy_j=$doy_g+$a;
}
if($doy_j<187){
$jm=(int)(($doy_j-1)/31); $jd=$doy_j-(31*$jm++);
}else{
$jm=(int)(($doy_j-187)/30); $jd=$doy_j-186-($jm*30); $jm+=7;
}
return($mod=='')?array($jy,$jm,$jd):$jy.$mod.$jm.$mod.$jd;
}
2此外,这:
我做错了什么
这行的作用是:var hdr={}
让我解释一下我的全部工作,我使用日历,我想将其更改为jalali日历,这是我的功能:
$('#calendar').fullCalendar({
header: hdr,
editable: true,
droppable: true, // this allows things to be dropped onto the calendar !!!
drop: function drop(date) {
// this function is called when something is dropped
// retrieve the dropped element's stored Event Object
var originalEventObject = $(this).data('eventObject');
// we need to copy it, so that multiple events don't have a reference to the same object
var copiedEventObject = $.extend({}, originalEventObject);
// assign it the date that was reported
copiedEventObject.start = date;
// render the event on the calendar
// the last `true` argument determines if the event "sticks" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/)
$('#calendar').fullCalendar('renderEvent', copiedEventObject, true);
// is the "remove after drop" checkbox checked?
if ($('#drop-remove').is(':checked')) {
// if so, remove the element from the "Draggable Events" list
$(this).remove();
}
},
windowResize: function windowResize(event, ui) {
$('#calendar').fullCalendar('render');
}
});
我过去常在日历中更改日历系统。我过去常在日历中更改日历系统。将公历日期转换为日历日期的简单方法
function gregorian_to_jalali(gy, gm, gd){
g_d_m = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
if (gy > 1600) {
jy = 979;
gy -= 1600;
}
else {
jy = 0;
gy -= 621;
}
gy2 = (gm > 2) ? (gy + 1) : gy;
days = (365 * gy) + (parseInt((gy2 + 3) / 4)) - (parseInt((gy2 + 99) / 100)) + (parseInt((gy2 + 399) / 400)) - 80 + gd + g_d_m[gm - 1];
jy += 33 * (parseInt(days / 12053));
days %= 12053;
jy += 4 * (parseInt(days / 1461));
days %= 1461;
if (days > 365) {
jy += parseInt((days - 1) / 365);
days = (days - 1) % 365;
}
jm = (days < 186) ? 1 + parseInt(days / 31) : 7 + parseInt((days - 186) / 30);
jd = 1 + ((days < 186) ? (days % 31) : ((days - 186) % 30));
var resultY = jy.toString();
var resultM = jm < 10 ? "0" + jm.toString() : jm.toString();
var resultD = jd < 10 ? "0" + jd.toString() : jd.toString();
return [resultY, resultM, resultD];
}
将公历日期转换为Jalali日期的简单方法
function gregorian_to_jalali(gy, gm, gd){
g_d_m = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
if (gy > 1600) {
jy = 979;
gy -= 1600;
}
else {
jy = 0;
gy -= 621;
}
gy2 = (gm > 2) ? (gy + 1) : gy;
days = (365 * gy) + (parseInt((gy2 + 3) / 4)) - (parseInt((gy2 + 99) / 100)) + (parseInt((gy2 + 399) / 400)) - 80 + gd + g_d_m[gm - 1];
jy += 33 * (parseInt(days / 12053));
days %= 12053;
jy += 4 * (parseInt(days / 1461));
days %= 1461;
if (days > 365) {
jy += parseInt((days - 1) / 365);
days = (days - 1) % 365;
}
jm = (days < 186) ? 1 + parseInt(days / 31) : 7 + parseInt((days - 186) / 30);
jd = 1 + ((days < 186) ? (days % 31) : ((days - 186) % 30));
var resultY = jy.toString();
var resultM = jm < 10 ? "0" + jm.toString() : jm.toString();
var resultD = jd < 10 ? "0" + jd.toString() : jd.toString();
return [resultY, resultM, resultD];
}
您提供的信息不完整。Try 2应该可以工作,并且转换结果存储在变量hdr中。建议:有一些免费代码可能会有所帮助。快速的谷歌搜索返回了这个站点。你知道这个{}在这里做什么吗:var hdr={}?它正在创建一个空对象,该对象将填充gregorian_to_jalaly,m,dy的返回值。您应该正确格式化代码,将所有or的实例替换为| |,将所有or的实例替换为&&,修复语法错误,如$g_a[int$g_m],并用var声明所有变量。最后,提供tr_num函数。在此之前,无法提供任何帮助。在您修复gregorian_to_jalali函数之前,其余的都是毫无意义的。您提供的信息是不完整的。Try 2应该可以工作,并且转换结果存储在变量hdr中。建议:有一些免费代码可能会有所帮助。快速的谷歌搜索返回了这个站点。你知道这个{}在这里做什么吗:var hdr={}?它正在创建一个空对象,该对象将填充gregorian_to_jalaly,m,dy的返回值。您应该正确格式化代码,将所有or的实例替换为| |,将所有or的实例替换为&&,修复语法错误,如$g_a[int$g_m],并用var声明所有变量。最后,提供tr_num函数。在此之前,无法提供任何帮助。在您修复gregorian_to_jalali函数之前,其余的都是毫无意义的。
function gregorian_to_jalali(gy, gm, gd){
g_d_m = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
if (gy > 1600) {
jy = 979;
gy -= 1600;
}
else {
jy = 0;
gy -= 621;
}
gy2 = (gm > 2) ? (gy + 1) : gy;
days = (365 * gy) + (parseInt((gy2 + 3) / 4)) - (parseInt((gy2 + 99) / 100)) + (parseInt((gy2 + 399) / 400)) - 80 + gd + g_d_m[gm - 1];
jy += 33 * (parseInt(days / 12053));
days %= 12053;
jy += 4 * (parseInt(days / 1461));
days %= 1461;
if (days > 365) {
jy += parseInt((days - 1) / 365);
days = (days - 1) % 365;
}
jm = (days < 186) ? 1 + parseInt(days / 31) : 7 + parseInt((days - 186) / 30);
jd = 1 + ((days < 186) ? (days % 31) : ((days - 186) % 30));
var resultY = jy.toString();
var resultM = jm < 10 ? "0" + jm.toString() : jm.toString();
var resultD = jd < 10 ? "0" + jd.toString() : jd.toString();
return [resultY, resultM, resultD];
}