persidate
Version:
persidate is a lightweight package for converting and managing Shamsi (Jalali) and Gregorian dates in JavaScript/TypeScript.
179 lines (127 loc) • 5.98 kB
Markdown
# persidate
[](https://www.npmjs.com/package/persidate)
[](https://bundlephobia.com/result?p=persidate)
[](https://www.npmjs.com/package/persidate)
**`persidate`** is a lightweight JavaScript/TypeScript library designed for converting and managing Shamsi (Jalali) and Gregorian dates. It provides a clean and simple API for handling date conversions, formatting, and utility functions.
---
## Installation
Using npm:
```bash
npm install persidate
```
Using yarn:
```bash
yarn add persidate
```
## Available Functions
### Convert
• convertToStandardDateTime
• convertToISODateTime
• convertToGregorianDate
• convertToGregorianDateString
• convertToJalaliDate
### Format
• formatToGregorianDate
• formatToGregorianDateTime
• formatToJalaliDatePadded
• formatToLocalizedDate
### Get
• getToday
• getTimeFromDate
• getDaysFromNow
• getJalaliTimeStamp
• getTimeAgo
### Utility
• addDaysToDate
• isBeforeDate
• isLeapYearJalali
### Constants
• jalaliMonthNames
• jalaliWeekdayNames
## Function Naming Patterns
The library follows these naming patterns for better consistency and developer experience:
• convert: For transforming between formats (e.g., Gregorian ↔ Jalali).
• format: For displaying dates in specific formats (e.g., padded, localized).
• get: For retrieving specific details (e.g., year, month, time).
• utility: For miscellaneous operations (e.g., comparisons, adding days).
• constants: Static arrays or objects (e.g., month and weekday names).
## Features
• Convert between Shamsi (Jalali) and Gregorian (Miladi) dates.
• Persian formatting with month/weekday names.
• Utility functions for date manipulation (e.g., adding days, comparing dates).
## Improvements:
1. Consistent headings: Simplifies navigation for users.
2. Better function categorization: Clear and concise explanation of each group.
3. Cleaner examples: Makes it easier for new users to understand the API.
4. Polished grammar and style: Improves readability and professionalism.
## Usage
`Here's a simple example of how to use persidate in your project:`
```ts
// Convert to local ISO string
const localISO = convertToStandardDateTime(new Date('2024-10-18T10:00:00Z'));
console.log(localISO); // 2024-10-18T13:30:00
// Convert to ISO with timezone adjustment
const isoDate = convertToISODateTime('2024-10-18T10:00:00Z');
console.log(isoDate); // 2024-10-18T11:00:00
// Convert Jalali (Shamsi) to Gregorian Date object
const miladi = convertToGregorianDate("1403-8-16");
console.log(miladi); // Wed Nov 06 2024 ...
// Convert Jalali to formatted Gregorian string
const miladiStr = convertToGregorianDateString("1403/8/16");
console.log(miladiStr); // 2024/11/6
// Convert Gregorian to Jalali with default format
const shamsi1 = convertToJalaliDate("2024-10-18");
console.log(shamsi1); // 1403-07-27
//convert Georgian date to Jalali
const shamsi2 = convertToJalaliDate(new Date());
console.log(germanDate); // 1403-07-27
// Convert Gregorian to Jalali with custom formats
console.log(convertToJalaliDate("2024-10-18", "dayMonth")); // 27 مهر
console.log(convertToJalaliDate("2024-10-18", "dayMonthYear")); // 27 مهر 1403
console.log(convertToJalaliDate("2024-10-18", "weekdayDayMonth")); // جمعه 27 مهر
console.log(convertToJalaliDate("2024-10-18", "weekdayDayMonthYear")); // جمعه 27 مهر 1403
console.log(convertToJalaliDate("2024-10-18", "day")); // 27
console.log(convertToJalaliDate("2024-10-18", "weekday")); // جمعه
console.log(convertToJalaliDate("2024-10-18", "month")); // مهر
console.log(convertToJalaliDate(1752771248824, "year")); // 1404
// Timestamp to Gregorian date string
console.log(formatToGregorianDate(1697625600000)); // 2023-10-19
// Date object to Gregorian string
console.log(formatToGregorianDate(new Date('2024-10-18'))); // 2024-10-18
// Jalali date + time to Gregorian datetime string
console.log(formatToGregorianDateTime(new Date(), '14:30')); // 2024-10-17T14:30
console.log(formatToGregorianDateTime(1697625600000, '14:30')); // 2024-10-17T14:30
// Gregorian to Jalali (padded)
console.log(formatToJalaliDatePadded('2024-10-18')); // 1403-07-26
console.log(formatToJalaliDatePadded(new Date())); // 1403-07-26
console.log(formatToJalaliDatePadded(1697625600000)); // 1403-07-26
// Gregorian to localized Jalali string
console.log(formatToLocalizedDate('2024-10-18', 'jYYYY-jM-jD')); // 1403-7-26
// Get today's date (YYYY-MM-DD)
console.log(getToday()); // e.g. 2024-10-17
// Extract time from datetime string
console.log(getTimeFromDate('2024-10-18T14:30:00')); // 14:30:00
console.log(getTimeFromDate(new Date())); // 12:43:00
console.log(getTimeFromDate(1697625600000)); // 12:43:00
// Days from now to future date
console.log(getDaysFromNow("2025-08-01T12:00:00")); // 20
console.log(getDaysFromNow(new Date("2025-07-20"))); // 8
// Convert Jalali to timestamp (ms)
console.log(getJalaliTimeStamp("1404-01-01")); // 1710873600000
// Time difference in Persian (e.g. "۲ روز پیش")
console.log(getTimeAgo(new Date()));
console.log(getTimeAgo("2025-07-20"));
console.log(getTimeAgo(1697625600000));
// Add N days to a date
const today = new Date();
const plusTen = addDaysToDate(today, 10);
console.log(plusTen);
// Compare two dates
const date1 = '2024-10-18';
const date2 = '2025-01-01';
console.log(isBeforeDate(date1, date2)); // true
// Check if the given Jalali year is a leap year
console.log(isLeapYearJalali(1403)); // true
```
## Contributors
`mmsafari:` [https://github.com/mmsafari](mmsafari)