برای استفاده از jQuery در Scrachpad می توانید کد زیر را قبل از همه کدها قرار دهید.
var script = document.createElement('script');script.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js";document.getElementsByTagName('head')[0].appendChild(script);
ضمنا برای استفاده از تبدیل کننده Javascript تاریخ های میلادی به شمسی (و بالعکس) از کد زیر استفاده کنید (کتابخانه جلالی)
// Jalali Functions :)
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 +(parseInt(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));
return [jy,jm,jd];
}
function jalali_to_gregorian(jy,jm,jd){
if(jy > 979){
gy=1600;
jy-=979;
}else{
gy=621;
}
days=(365*jy) +((parseInt(jy/33))*8) +(parseInt(((jy%33)+3)/4)) +78 +jd +((jm<7)?(jm-1)*31:((jm-7)*30)+186);
gy+=400*(parseInt(days/146097));
days%=146097;
if(days > 36524){
gy+=100*(parseInt(--days/36524));
days%=36524;
if(days >= 365)days++;
}
gy+=4*(parseInt(days/1461));
days%=1461;
if(days > 365){
gy+=parseInt((days-1)/365);
days=(days-1)%365;
}
gd=days+1;
sal_a=[0,31,((gy%4==0 && gy%100!=0) || (gy%400==0))?29:28,31,30,31,30,31,31,30,31,30,31];
for(gm=0;gm<13;gm++){
v=sal_a[gm];
if(gd <= v)break;
gd-=v;
}
return [gy,gm,gd];
}
برای استخراج تاریخ فعلی سرور به وسیله jQuery از تابع زیر استفاده کنید :
Date.prototype.yyyymmdd = function() {
var yyyy = this.getFullYear().toString();
var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based
mm = (mm[1]?mm:"0"+mm[0]);
var dd = this.getDate().toString();
dd = (dd[1]?dd:"0"+dd[0]);
//return yyyy + "," + (mm[1]?mm:"0"+mm[0]) + "," + (dd[1]?dd:"0"+dd[0]);// padding
return { yyyy : yyyy, mm : mm , dd : dd };
};
var date = new Date();
console.log( date.yyyymmdd() );
برای تبدیل تاریخ فعلی سرور (تاریخ روز) به شمسی از تابع زیر استفاده کنید :
nowgdate = date.yyyymmdd();
console.log( gregorian_to_jalali(nowgdate.yyyy,nowgdate.mm,nowgdate.dd) );
var nowJalali = gregorian_to_jalali(nowgdate.yyyy,nowgdate.mm,nowgdate.dd);
nowJalali = {yyyy : nowJalali[0] , mm : nowJalali[1] , dd : nowJalali[2]};
console.log(nowJalali);
برای تبدیل تاریخ در FrontEnd یا همان رابط کاربری نهایی، می تونید از کتابخانه moment جلالی استفاده کنید. نمونه کدش رو هم در ادامه گذاشتم.
var siteTime = jQuery(".convertToJalali").text();
var m = moment.from(siteTime, 'en', 'MM/DD/YY HH:mm:ss');
if(m.isValid()){
m.locale('fa');
output = m.format("YYYY/MM/DD HH:mm");
} else {
output = "it is not valid date";
}
console.log(siteTime + ":" + output);