Mohammad Asif cf937194cb Removed un-waned things 1. | 6 months ago | |
---|---|---|
.. | ||
dist | 6 months ago | |
types | 6 months ago | |
LICENSE | 6 months ago | |
README.md | 6 months ago | |
package.json | 6 months ago |
Zero dependency Hijri calendar based on Um AlQura
Run the following npm
or yran
command:
npm i @umalqura/core
-or-
yarn add @umalqura/core
You can also use the library directly in the browser by adding the following to your html:
<script src="https://unpkg.com/@umalqura/core@0.0.7/dist/umalqura.min.js"></script>
import uq from '@umalqura/core';
// Initializes a new umalqura instance using current date and time.
const now = uq();
// Do more stuff
// ...
A global var named umalqura
will be available.
// Initializes a new umalqura instance using current date and time.
var now = umalqura();
// Do more stuff
// ...
// Initializes using current date and time.
umalqura();
// Initializes using provided date and time.
umalqura(date: Date);
// Initializes using provided Hijri year, month, day and the optionally provided time.
umalqura(hy: number, hm: number, hd: number, hour?: number, minute?: number, second?: number, millisecond?: number);
The umalqura(...)
function returns an initialized umalqura.UmAlQura
object which exposes the following properties and methods:
Name | Description |
---|---|
date |
Returns the Date object. |
hy |
Returns the Hijri year. |
hm |
Returns the Hijri month. |
hd |
Returns the Hijri day of month. |
dayOfYear |
Returns the Hijri day of year. |
dayOfWeek |
Returns the day of week. |
weekOfYear |
Returns the Hijri week of year. |
daysInYear |
Returns the number of days in current Hijri year. |
daysInMonth |
Returns the number of days in current Hijri month and year. |
isLeapYear |
Returns true if leap year, false otherwise. |
monthArray |
Returns the dates of month arranged in a 2D array. |
Examples:
import uq from '@umalqura/core';
const d = uq(new Date(2019, 6, 3)); // July 3rd 2019
console.log(d.hy, d.hm, d.hd); // Outputs 1440, 10, 30
// -or
const d = uq(1440, 10, 30);
console.log(d.date); // Outputs Wed Jul 03 2019 00:00:00 TZ...
Note that all methods are immutably.
Name | Arguments | Description |
---|---|---|
add |
v:number u:unitMs |
Returns a new UmAlQura object adding the specified number of Hijri units to the current instance. |
subtract |
v:number u:unitMs |
Returns a new UmAlQura object subtracting the specified number of Hijri units to the current instance. |
startOf |
u:unit |
Returns a new UmAlQura object starting at the specified Hijri unit of time. |
endOf |
u:unit |
Returns a new UmAlQura object ending at the specified Hijri unit of time. |
isBefore |
cmp:UmAlQura\|Date unit?:unitMs |
Returns whether current instance is before cmp . Check can be pinned down to unitMs which defaults to milliseconds. |
isAfter |
cmp:UmAlQura\|Date unit?:unitMs |
Returns whether current instance is after cmp . Check can be pinned down to unitMs which defaults to milliseconds. |
isSame |
cmp:UmAlQura\|Date unit?:unitMs |
Returns whether current instance is same as cmp . Check can be pinned down to unitMs which defaults to milliseconds. |
isSameOrBefore |
cmp:UmAlQura\|Date unit?:unitMs |
Returns whether current instance is same as or before cmp . Check can be pinned down to unitMs which defaults to milliseconds. |
isSameOrAfter |
cmp:UmAlQura\|Date unit?:unitMs |
Returns whether current instance is same as or after cmp . Check can be pinned down to unitMs which defaults to milliseconds. |
isBetween |
from:UmAlQura\|Date to:UmAlQura\|Date fromIncl?:boolean toIncl?:boolean unit?:unitMs |
Returns whether current instance is between from and to . Check can be pinned down to unitMs which defaults to milliseconds. By, default the match is exclusive of both ends. This can be controlled via fromIncl and toIncl . |
format |
mask:string locale?:string |
Returns a formatted string of the Hijri date and time using the specified mask and optionally a locale . |
unitMs
can be any of the following strings: year, month, week, day, hour, minute, second, millisecond
.
unit
can be any of the following string: year, month, week, day, hour, minute, second
.
Examples:
import uq from '@umalqura/core';
const d = uq(new Date(2019, 6, 3));
// Add 5 Hijri months
const after5HijriMonths = d.add(5, 'month');
// ٣٠/١٠/١٤٤٠
d.format('dd/MM/yyyy', 'ar');
// 30/03/1441
after5HijriMonths.format('dd/MM/yyyy');
// True
after5HijriMonths.isAfter(d);
// Shawwāl 1, 1440
d.startOf('month').format('longDate');
const endOf1440H = d.endOf('year');
// الجمعة، ٢٩ ذو الحجة، ١٤٤٠
endOf1440H.format('fullDate', 'ar');
// Fri Aug 30 2019 23:59:59 TZ...
endOf1440H.date;
The following properties and functions exist directly on the export umalqura
object:
Name | Description |
---|---|
VERSION |
Returns the library version. |
$ |
Gives access to static methods. |
min |
Returns the minimum supported Hijri date. |
max |
Returns the maximum supported Hijri date. |
locale(locale?: string) |
Gets or sets the local to be used globally. |
rtl() |
Returns whether current locale supports RTL. |
times() |
Returns the times names array according to currently set global locale. |
days() |
Returns the days names array according to currently set global locale. |
daysShort() |
Returns the short days names array according to currently set global locale. |
months() |
Returns the Hijri months names array according to currently set global locale. |
monthsShort() |
Returns the short Hijri month names array according to currently set global locale. |
localizeNum(n: number) |
Returns a localized string representing the specified number according to currently set global locale. |
Examples:
import uq from '@umalqura/core';
// Set global locale to Arabic so that we no longer need to specify a locale when calling format() function.
uq.locale('ar');
// Returns true
uq.rtl();
// Returns ['محرم', 'صفر', 'ربيع الأول', 'ربيع الثاني', 'جمادى الأولى', 'جمادى الآخرة', 'رجب', 'شعبان', 'رمضان', 'شوال', 'ذو القعدة', 'ذو الحجة']
uq.months();
Name | Format |
---|---|
default |
ddd dd MMM yyyy HH:mm:ss for ar ddd MMM dd yyyy HH:mm:ss for en |
shortDate |
yy/M/d for ar M/d/yy for en |
mediumDate |
d MMM, yyyy for ar MMM d, yyyy for en |
longDate |
d MMMM, yyyy for ar MMMM d, yyyy for en |
fullDate |
dddd, d MMMM, yyyy for ar dddd, MMMM d, yyyy for en |
shortTime |
h:mm TT |
mediumTime |
h:mm:ss TT |
longTime |
h:mm:ss.l TT |
An HTML-based sample is available in ./sample/browser.html
locally or online @ https://umalqura.github.io/.