0.3.0 • Published 3 years ago
intl-date v0.3.0
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
$ npm install intl-dateExample
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'); // 16
date.toString('islamic-umalqura'); // 1377-03-22
date.getYear('islamic-umalqura'); // 1377
date.getMonth('islamic-umalqura'); // 3
date.getDay('islamic-umalqura'); // 22
date.toString('persian'); // 1336-07-24
date.getYear('persian'); // 1336
date.getMonth('persian'); // 7
date.getDay('persian'); // 24API
Different ways to create IntlDate objects
of - Create IntlDate from a year, month, and day
const date = IntlDate.of('islamic-umalqura', 1377, 3, 22);from - Create IntlDate from a Javascript Date object
const jsDate = new Date(2017, 11, 25);
const intlDate = IntlDate.from(jsDate);parse - Create IntlDate from a string
const date = IntlDate.parse('gregorian', '1957-05-16');today - Create IntlDate for today's date
const date = IntlDate.today();Getters
getYear
const year = date.getYear('islamic-umalqura');getMonth
const month = date.getMonth('gregorian');getDay
const day = date.getDay('persian');getDayOfWeek
const dayOfWeek = date.getDayOfWeek();getQuarter
const quarter = date.getQuarter('gregorian');Manipulative operations (produces new immutable IntlDate objects)
plusDays
const oldDate = IntlDate.of('gregorian', 1957, 10, 16);
const newDate = oldDate.plusDays(20);
oldDate.toString('gregorian'); // 1957-10-16
newDate.toString('gregorian'); // 1957-11-05minusDays
const oldDate = IntlDate.of('gregorian', 1957, 10, 16);
const newDate = oldDate.minusDays(20);
oldDate.toString('gregorian'); // 1957-10-16
newDate.toString('gregorian'); // 1957-09-26Comparing IntlDate objects
isEqual
const date1 = IntlDate.of('gregorian', 1957, 10, 16);
const date2 = IntlDate.of('islamic-umalqura', 1377, 3, 22);
const result = date1.isEqual(date2); // trueisBefore
const date1 = IntlDate.of('gregorian', 1957, 10, 15);
const date2 = IntlDate.of('islamic-umalqura', 1377, 3, 22);
const result = date1.isBefore(date2); // trueisAfter
const date1 = IntlDate.of('gregorian', 1957, 10, 17);
const date2 = IntlDate.of('islamic-umalqura', 1377, 3, 22);
const result = date1.isAfter(date2); // trueisBetween
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); // truedaysUntil
const date1 = IntlDate.of('gregorian', 1957, 10, 16);
const date2 = IntlDate.of('gregorian', 1957, 11, 20);
const days = date1.daysUntil(date2); // 35min
const date1 = IntlDate.of('gregorian', 1957, 10, 16);
const date2 = IntlDate.of('gregorian', 1957, 10, 20);
const min = IntlDate.min(date1, date2); // date1max
const date1 = IntlDate.of('gregorian', 1957, 10, 16);
const date2 = IntlDate.of('gregorian', 1957, 10, 20);
const max = IntlDate.max(date1, date2); // date2String operations
format
const date = IntlDate.of('gregorian', 2022, 7, 11);
const formattedString = date.format('gregorian', 'yyyy-MM-dd'); // 2022-07-11toString
const date = IntlDate.of('gregorian', 2022, 7, 11);
const string = date.toString('gregorian'); // 2022-07-11License
Copyright 2022 Khalid H. Alharisi
Licensed 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 at
http://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.