PageSourceSearch

https://www.cyber-islam.eu/wp-content/plugins/cyber-islam-rest-api/public/js/hijri-date.js?ver=1.0.0

js cyber-islam.eu collected 2026-09-25 12:14:47 UTC 6,780 bytes, 126 lines download raw bytes

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.