https://www.cyber-islam.eu/wp-content/plugins/cyber-islam-rest-api/public/js/hijri-date.js?ver=1.0.0
1/** 2 * @description JavaScript Hijri Date Function 3 * @version 2.0 4 * 5 * @author (c) ZulNs, Yogyakarta, December 2013 6 * revised to version 2.0: Gorontalo, 18 January 2019 7 * 8 * @namespace HijriDate 9 */ 10'use strict'; 11function HijriDate(){ 12 let hd=typeof this=='object'?this:window,time,tzom=Date.parse('01 Jan 1970'),tzo=parseInt(parseInt(tzom/1000)/60),tzs=Date(1970,0,1), 13 utc={yyy:0,mmm:0,ddd:0,day:0,hh:0,mm:0,ss:0,ms:0},loc={yyy:0,mmm:0,ddd:0,day:0,hh:0,mm:0,ss:0,ms:0}; 14 tzs=tzs.substring(tzs.lastIndexOf('GMT')); 15 time=HijriDate.UTC(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6]); 16 if(isNaN(time))time=Date.now(); 17 else if(arguments.length==1)time=HijriDate.int(arguments[0],Date.now()); 18 else time+=tzom; 19 updDt(utc,time);updDt(loc,time-tzom); 20 function getUTCTmStr(){let d=HijriDate.toNDigit;return d(utc.hh,2)+':'+d(utc.mm,2)+':'+d(utc.ss,2)} 21 function getLocTmStr(){let d=HijriDate.toNDigit;return d(loc.hh,2)+':'+d(loc.mm,2)+':'+d(loc.ss,2)} 22 function updUTCTm(){updTm(utc);updDt(utc,time);updDt(loc,time-tzom)} 23 function updLocTm(){updTm(loc);updDt(loc,time);time+=tzom;updDt(utc,time)} 24 function updTm(r){time=HijriDate.UTC(r.yyy,r.mmm,r.ddd,r.hh,r.mm,r.ss,r.ms)} 25 function updDt(r,t){HijriDate.parseTime(r,t)} 26 hd.getDate=function(){return loc.ddd}; 27 hd.getDay=function(){return loc.day}; 28 hd.getFullYear=function(){return loc.yyy}; 29 hd.getHours=function(){return loc.hh}; 30 hd.getMilliseconds=function(){return loc.ms}; 31 hd.getMinutes=function(){return loc.mm}; 32 hd.getMonth=function(){return loc.mmm}; 33 hd.getSeconds=function(){return loc.ss}; 34 hd.getTime=function(){return time}; 35 hd.getTimezoneOffset=function(){return tzo}; 36 hd.getUTCDate=function(){return utc.ddd}; 37 hd.getUTCDay=function(){return utc.day}; 38 hd.getUTCFullYear=function(){return utc.yyy}; 39 hd.getUTCHours=function(){return utc.hh}; 40 hd.getUTCMilliseconds=function(){return utc.ms}; 41 hd.getUTCMinutes=function(){return utc.mm}; 42 hd.getUTCMonth=function(){return utc.mmm}; 43 hd.getUTCSeconds=function(){return utc.ss}; 44 hd.setDate=function(dt){loc.ddd=HijriDate.int(dt,loc.ddd);updLocTm()}; 45 hd.setFullYear=function(yr){loc.yyy=HijriDate.int(yr,loc.yyy);updLocTm()}; 46 hd.setHours=function(hr){loc.hh=HijriDate.int(hr,loc.hh);updLocTm()}; 47 hd.setMilliseconds=function(ms){loc.ms=HijriDate.int(ms,loc.ms);updLocTm()}; 48 hd.setMinutes=function(min){loc.mm=HijriDate.int(min,loc.mm);updLocTm()}; 49 hd.setMonth=function(mon){loc.mmm=HijriDate.int(mon,loc.mmm);updLocTm()}; 50 hd.setSeconds=function(sec){loc.ss=HijriDate.int(sec,loc.ss);updLocTm()}; 51 hd.setTime=function(tm){time=HijriDate.int(tm,time);updDt(utc,time);updDt(loc,time-tzom)}; 52 hd.setUTCDate=function(dt){utc.ddd=HijriDate.int(dt,utc.ddd);updUTCTm()}; 53 hd.setUTCFullYear=function(yr){utc.yyy=HijriDate.int(yr,utc.yyy);updUTCTm()}; 54 hd.setUTCHours=function(hr){utc.hh=HijriDate.int(hr,utc.hh);updUTCTm()}; 55 hd.setUTCMilliseconds=function(ms){utc.ms=HijriDate.int(ms,utc.ms);updUTCTm()}; 56 hd.setUTCMinutes=function(min){utc.mm=HijriDate.int(min,utc.mm);updUTCTm()}; 57 hd.setUTCMonth=function(mon){utc.mmm=HijriDate.int(mon,utc.mmm);updUTCTm()}; 58 hd.setUTCSeconds=function(sec){utc.ss=HijriDate.int(sec,utc.ss);updUTCTm()}; 59 hd.toDateString=function(){ 60 let h=HijriDate,d=h.toNDigit;return h.weekdayShortNames[loc.day]+' '+h.monthShortNames[loc.mmm]+' '+d(loc.ddd,2)+' '+d(loc.yyy,4) 61 }; 62 hd.toISOString=function(){ 63 let d=HijriDate.toNDigit;return d(utc.yyy,utc.yyy<0?6:4)+'-'+d(utc.mmm+1,2)+'-'+d(utc.ddd,2)+'T'+getUTCTmStr()+'.'+d(utc.ms,3)+'Z' 64 }; 65 hd.toJSON=function(){return hd.toISOString()}; 66 hd.toString=function(){return hd.toDateString()+' '+hd.toTimeString()}; 67 hd.toTimeString=function(){return getLocTmStr()+' '+tzs}; 68 hd.toUTCString=function(){ 69 let h=HijriDate,d=h.toNDigit; 70 return h.weekdayShortNames[utc.day]+', '+d(utc.ddd,2)+' '+h.monthShortNames[utc.mmm]+' '+d(utc.yyy,4)+' '+getUTCTmStr()+' GMT' 71 }; 72 hd.valueOf=function(){return time}; 73 hd.getDayCountInMonth=function(){return HijriDate.dayCountInMonth((loc.yyy-1)*12+loc.mmm)}; 74 hd.getUTCDayCountInMonth=function(){return HijriDate.dayCountInMonth((utc.yyy-1)*12+utc.mmm)}; 75 return hd.toString() 76} 77Object.defineProperty(HijriDate,'DIFF',{value:-425215872e5});//Value of time interval in milliseconds from January 1, 1970AD, 00:00:00 AM to July 19, 622AD, 00:00:00 AM 78Object.defineProperty(HijriDate,'MOON_CYCLE',{value:29.5305882}); 79Object.defineProperty(HijriDate,'dayCount',{value:function(m){ 80 let h=HijriDate.MOON_CYCLE; 81 if(m>=0) return parseInt(m*h); 82 let r=(parseInt(m/360)-1)*360;//30 years cycle 83 return parseInt(r*h)-parseInt((r-m)*h) 84}}); 85Object.defineProperty(HijriDate,'dayCountInMonth',{value:function(m){return HijriDate.dayCount(m+1)-HijriDate.dayCount(m)}}); 86Object.defineProperty(HijriDate,'int',{value:function(n,d){n=parseInt(n);return isNaN(n)?d:n}}); 87Object.defineProperty(HijriDate,'now',{value:function(){return Date.now()}}); 88Object.defineProperty(HijriDate,'parseTime',{value:function(r,t){ 89 let h=HijriDate,hdc=h.dayCount; 90 t-=h.DIFF; 91 let tp=t%864e5,dc=parseInt(t/864e5),m=parseInt(dc/h.MOON_CYCLE); 92 if(t<0){ 93 if(tp<0){dc--;tp+=864e5} 94 if(dc<hdc(m))m-- 95 } 96 r.ddd=1+dc-hdc(m); 97 if(r.ddd>h.dayCountInMonth(m))r.ddd-=h.dayCountInMonth(m++); 98 r.yyy=Math.floor(m/12)+1; 99 r.mmm=(m%12+12)%12; 100 r.ms=tp%1e3;tp=parseInt(tp/1e3); 101 r.ss=tp%60;tp=parseInt(tp/60); 102 r.mm=tp%60;tp=parseInt(tp/60); 103 r.hh=tp%24; 104 r.day=((dc+5)%7+7)%7 105}}); 106Object.defineProperty(HijriDate,'toNDigit',{value:function(n,d){ 107 let s=Math.abs(n).toString();if(s.length<d)s=('00000000'+s).slice(-d);if(n<0)s='-'+s;return s 108}}); 109Object.defineProperty(HijriDate,'UTC',{value:function(){ 110 let h=HijriDate,i=h.int,a=arguments,t; 111 if(isNaN(a[0]))return NaN; 112 a[0]=parseInt(a[0]);a[1]=i(a[1],0);a[2]=i(a[2],1);a[3]=i(a[3],0);a[4]=i(a[4],0);a[5]=i(a[5],0);a[6]=i(a[6],0); 113 t=h.dayCount((a[0]-1)*12+a[1]);t+=a[2]-1;t*=864e5;t+=a[3]*36e5;t+=a[4]*6e4;t+=a[5]*1e3;t+=a[6];t+=h.DIFF;return t 114}}); 115HijriDate.monthNames=["Muharram","Safar","Rabi'ul-Awwal","Rabi'ul-Akhir","Jumadal-Ula","Jumadal-Akhir","Rajab","Sha'ban","Ramadan","Syawwal","Dhul-Qa'da","Dhul-Hijja"]; 116HijriDate.monthShortNames=["Muh","Saf","RAw","RAk","JAw","JAk","Raj","Sha","Ram","Sya","DhQ","DhH"]; 117HijriDate.weekdayNames=["Ahad","Ithnin","Thulatha","Arba'a","Khams","Jumu'ah","Sabt"]; 118HijriDate.weekdayShortNames=["Ahd","Ith","Thu","Arb","Kha","Jum","Sab"]; 119Date.prototype.getDayCountInMonth=function(){ 120 let y=this.getFullYear(),isLeapYear=(y%100!=0)&&(y%4==0)||(y%400==0),c=[31,isLeapYear?29:28,31,30,31,30,31,31,30,31,30,31]; 121 return c[this.getMonth()] 122}; 123Date.prototype.getUTCDayCountInMonth=function(){ 124 let y=this.getUTCFullYear(),isLeapYear=(y%100!=0)&&(y%4==0)||(y%400==0),c=[31,isLeapYear?29:28,31,30,31,30,31,31,30,31,30,31]; 125 return c[this.getUTCMonth()] 126};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.