Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/coder966/intl-date
Javascript library to represent and work with dates in different calendar systems (e.g. hijri, persian and others).
https://github.com/coder966/intl-date
calendar date hijrah hijri hijri-calendar hijri-date hijri-dates hijri-dates-converter internationalization intl intl-apis javascript persian persian-calendar
Last synced: about 4 hours ago
JSON representation
Javascript library to represent and work with dates in different calendar systems (e.g. hijri, persian and others).
- Host: GitHub
- URL: https://github.com/coder966/intl-date
- Owner: coder966
- Created: 2022-07-13T15:06:53.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-03-21T19:47:27.000Z (8 months ago)
- Last Synced: 2024-11-13T12:45:02.572Z (3 days ago)
- Topics: calendar, date, hijrah, hijri, hijri-calendar, hijri-date, hijri-dates, hijri-dates-converter, internationalization, intl, intl-apis, javascript, persian, persian-calendar
- Language: TypeScript
- Homepage:
- Size: 247 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# Intl Date
Javascript library to represent and work with dates in different calendar systems (e.g. hijri, persian and others).
## Features
- Simple and type-safe API
- Immutable objects
- Supports 7 calendar systems
- Tiny: 1kB (minified + gzipped)
- Zero dependencies. Leverages `Intl.DateTimeFormat`.## Supported Calendars
- gregorian
- islamic
- islamic-umalqura
- islamic-rgsa
- islamic-civil
- islamic-tbla
- persian## Installation
```shell
$ npm install intl-date
```## Example
```javascript
const date = IntlDate.of('islamic-umalqura', 1377, 3, 22);date.toString('gregorian'); // 1957-10-16
date.getYear('gregorian'); // 1957
date.getMonth('gregorian'); // 10
date.getDay('gregorian'); // 16date.toString('islamic-umalqura'); // 1377-03-22
date.getYear('islamic-umalqura'); // 1377
date.getMonth('islamic-umalqura'); // 3
date.getDay('islamic-umalqura'); // 22date.toString('persian'); // 1336-07-24
date.getYear('persian'); // 1336
date.getMonth('persian'); // 7
date.getDay('persian'); // 24
```## API
### Different ways to create IntlDate objects
#### of - Create IntlDate from a year, month, and day
```javascript
const date = IntlDate.of('islamic-umalqura', 1377, 3, 22);
```#### from - Create IntlDate from a Javascript Date object
```javascript
const jsDate = new Date(2017, 11, 25);
const intlDate = IntlDate.from(jsDate);
```#### parse - Create IntlDate from a string
```javascript
const date = IntlDate.parse('gregorian', '1957-05-16');
```#### today - Create IntlDate for today's date
```javascript
const date = IntlDate.today();
```### Getters
#### getYear
```javascript
const year = date.getYear('islamic-umalqura');
```#### getMonth
```javascript
const month = date.getMonth('gregorian');
```#### getDay
```javascript
const day = date.getDay('persian');
```#### getDayOfWeek
```javascript
const dayOfWeek = date.getDayOfWeek();
```#### getQuarter
```javascript
const quarter = date.getQuarter('gregorian');
```### Manipulative operations (produces new immutable IntlDate objects)
#### plusDays
```javascript
const oldDate = IntlDate.of('gregorian', 1957, 10, 16);
const newDate = oldDate.plusDays(20);oldDate.toString('gregorian'); // 1957-10-16
newDate.toString('gregorian'); // 1957-11-05
```#### minusDays
```javascript
const oldDate = IntlDate.of('gregorian', 1957, 10, 16);
const newDate = oldDate.minusDays(20);oldDate.toString('gregorian'); // 1957-10-16
newDate.toString('gregorian'); // 1957-09-26
```### Comparing IntlDate objects
#### isEqual
```javascript
const date1 = IntlDate.of('gregorian', 1957, 10, 16);
const date2 = IntlDate.of('islamic-umalqura', 1377, 3, 22);
const result = date1.isEqual(date2); // true
```#### isBefore
```javascript
const date1 = IntlDate.of('gregorian', 1957, 10, 15);
const date2 = IntlDate.of('islamic-umalqura', 1377, 3, 22);
const result = date1.isBefore(date2); // true
```#### isAfter
```javascript
const date1 = IntlDate.of('gregorian', 1957, 10, 17);
const date2 = IntlDate.of('islamic-umalqura', 1377, 3, 22);
const result = date1.isAfter(date2); // true
```#### isBetween
```javascript
const date1 = IntlDate.of('gregorian', 1957, 10, 16);
const date2 = IntlDate.of('gregorian', 1957, 10, 20);
const date3 = IntlDate.of('gregorian', 1957, 10, 25);
const result = date2.isBetween(date1, date3); // true
```#### daysUntil
```javascript
const date1 = IntlDate.of('gregorian', 1957, 10, 16);
const date2 = IntlDate.of('gregorian', 1957, 11, 20);
const days = date1.daysUntil(date2); // 35
```#### min
```javascript
const date1 = IntlDate.of('gregorian', 1957, 10, 16);
const date2 = IntlDate.of('gregorian', 1957, 10, 20);
const min = IntlDate.min(date1, date2); // date1
```#### max
```javascript
const date1 = IntlDate.of('gregorian', 1957, 10, 16);
const date2 = IntlDate.of('gregorian', 1957, 10, 20);
const max = IntlDate.max(date1, date2); // date2
```### String operations
#### format
```javascript
const date = IntlDate.of('gregorian', 2022, 7, 11);
const formattedString = date.format('gregorian', 'yyyy-MM-dd'); // 2022-07-11
```#### toString
```javascript
const date = IntlDate.of('gregorian', 2022, 7, 11);
const string = date.toString('gregorian'); // 2022-07-11
```## License
```txt
Copyright 2022 Khalid H. AlharisiLicensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
```