Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/xsoh/moment-hijri
A Hijri calendar (Based on Umm al-Qura calculations) plugin for moment.js
https://github.com/xsoh/moment-hijri
calendar hijri hijri-calendar javascript lunar moment moment-hijri
Last synced: 1 day ago
JSON representation
A Hijri calendar (Based on Umm al-Qura calculations) plugin for moment.js
- Host: GitHub
- URL: https://github.com/xsoh/moment-hijri
- Owner: xsoh
- License: mit
- Created: 2014-11-29T13:07:31.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2023-08-04T09:08:22.000Z (over 1 year ago)
- Last Synced: 2024-03-16T00:45:05.834Z (9 months ago)
- Topics: calendar, hijri, hijri-calendar, javascript, lunar, moment, moment-hijri
- Language: JavaScript
- Homepage: http://momentjs.com/docs/#/plugins/hijri/
- Size: 171 KB
- Stars: 193
- Watchers: 5
- Forks: 79
- Open Issues: 41
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-arabic - moment-hijri - A Hijri calendar (based on Umm al-Qura calculations) plugin for moment.js. (Programming Languages)
- awesome-arabic - moment-hijri - A Hijri calendar (based on Umm al-Qura calculations) plugin for moment.js. (Programming Languages)
README
[![NPM version][npm-version-image]][npm-url] [![MIT License][license-image]][license-url] [![Build Status][travis-image]][travis-url]
moment-hijri
==============A Hijri (Based on Umm al-Qura calculations) calendar system plugin for moment.js.
About
-----Hijri is the Islamic lunar calendar used by Muslims to determine the proper days on which to observe the annual fasting, to attend Hajj, and to celebrate other Islamic holidays and festivals. More information about Hijri can be found at [wikipedia](https://en.wikipedia.org/wiki/Islamic_calendar).
This plugin adds Hijri calendar support to [momentjs](http://momentjs.com) library.
Calendar conversion is based on the [Umm al-Qura calculations](http://www.ummulqura.org.sa/).
Upgrading to 3.0.0 [31-Oct-2024 of 28-Rabii_2-1446]
---------------
Adjusted dates has been changed to match ummalqura:-
- 1446-05-29 (old 30)
- 1446-06-30 (old 29)
- 1485-09-29 (old 30)
- 1485-10-30 (old 29)### Upgrading to 2.0.0
---------------
Because of [Using 'h' specifier might cause overlap with hour's specifier](https://github.com/xsoh/moment-hijri/issues/8), the specifier has been changed from `h` to `i` as a prefix. For example in the previous version to get the four digit year,
`hYYYY` will be used. In version 2.0 or above it should be replaced by `iYYYY`.Where to use it?
---------------Like `momentjs`, `moment-hijri` works in browser and in Node.js.
### Node.js
```shell
npm install moment-hijri
``````js
var moment = require('moment-hijri');
moment().format('iYYYY/iM/iD');
```### Browser
```htmlmoment().format('iYYYY/iM/iD');
```
### Require.js
```js
require.config({
paths: {
"moment": "path/to/moment",
"moment-hijri": "path/to/moment-hijri"
}
});
define(["moment-hijri"], function (moment) {
moment().format('iYYYY/iM/iD');
});
```API
---This plugin tries to mimic `momentjs` api. Basically, when formatting or parsing a string, add an `i` to the format token such as 'iYYYY' or 'iM'. For example:
```js
m = moment('1410/8/28', 'iYYYY/iM/iD'); // Parse a Hijri date.
m.format('iYYYY/iM/iD [is] YYYY/M/D'); // 1410/8/28 is 1990/3/25m.iYear(); // 1410
m.iMonth(); // 7
m.iDate(); // 28
m.iDayOfYear(); // 236
m.iWeek(); // 35
m.iWeekYear(); // 1410m.add(1, 'iYear');
m.add(2, 'iMonth');
m.add(1, 'idate');
m.format('iYYYY/iM/iD'); // 1411/10/29m.iMonth(11);
m.startOf('iMonth');
m.format('iYYYY/iM/iD'); // 1411/12/1m.iYear(1392);
m.startOf('iYear');
m.format('iYYYY/iM/iD'); // 1420/1/1moment('1436/1/30', 'iYYYY/iMM/iDD').isValid(); // false (This month is only 29 days).
moment('1436/2/30', 'iYYYY/iMM/iDD').isValid(); // true (This month is 30 days).moment('1436/2/6 16:40', 'iYYYY/iM/iD HH:mm').format('YYYY-M-D HH:mm:ss'); // 2014-11-28 16:40:00
moment('2014-11-28 16:40:00', 'YYYY-M-D HH:mm:ss').endOf('iMonth').format('iYYYY/iM/iD HH:mm:ss'); // 1436/2/30 23:59:59
// Complex parse:
moment('1990 5 25', 'YYYY iM D').format('YYYY/MM/DD'); // 1990/03/25
```To use the Arabic locale:
- Load [moment-with-locales](http://momentjs.com/downloads/moment-with-locales.js).
- Set the global or local locale to `ar-SA` see [here](http://momentjs.com/docs/#/i18n/changing-locale/).
- use it normally :+1:Here is example:
```html
moment.locale('ar-SA');// 2- Set the global locale to `ar-SA`
m = moment();
m.format('iYYYY/iM/iDهـ الموافق YYYY/M/Dم'); //3- use it normally
//١٤٣٧/٨/١٧هـ الموافق ٢٠١٦/٥/٢٤م
```Acknowledgements
-------
This project was built from the great work done by [@behrang](https://github.com/behrang) whose behind [moment-jalaali](https://github.com/jalaali/moment-jalaali) project.License
-------MIT
[license-image]: http://img.shields.io/badge/license-MIT-blue.svg?style=flat
[license-url]: LICENSE[npm-url]: https://npmjs.org/package/moment-hijri
[npm-version-image]: http://img.shields.io/npm/v/moment-hijri.svg?style=flat[travis-url]: https://travis-ci.org/xsoh/moment-hijri
[travis-image]: https://travis-ci.org/xsoh/moment-hijri.svg?style=flat