https://github.com/amirhsnf/pyno-date
A lightweight Angular library for converting and formatting Jalali and Gregorian dates.
https://github.com/amirhsnf/pyno-date
Last synced: 6 days ago
JSON representation
A lightweight Angular library for converting and formatting Jalali and Gregorian dates.
- Host: GitHub
- URL: https://github.com/amirhsnf/pyno-date
- Owner: amirhsnf
- Created: 2025-05-31T12:37:36.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2025-05-31T12:42:47.000Z (5 months ago)
- Last Synced: 2025-05-31T23:28:25.044Z (5 months ago)
- Language: TypeScript
- Size: 8.79 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- fucking-awesome-angular - pyno-date - A lightweight Angular library for converting and formatting Jalali and Gregorian dates. (Third Party Components / DOM)
- awesome-angular - pyno-date - A lightweight Angular library for converting and formatting Jalali and Gregorian dates. (Third Party Components / DOM)
README
# 🗓️ pyno-date
A lightweight Angular library for converting and formatting Gregorian and Jalali (Persian) dates.
Inspired by PHP's date formatting system.
---
## 📦 Installation
```bash
npm install pyno-date
```
## ⚙️ Setup
Import the module into your Angular app module file or your standalone component:
For module-based apps:
```ts
import { PynoDateModule } from 'pyno-date';
@NgModule({
imports: [
// ... ,
PynoDateModule
]
})
export class AppModule {}
```
For standalone components:
```ts
import { PynoDateModule } from 'pyno-date';
@Component({
imports: [
// ... ,
PynoDateModule
]
})
```
## 🧪 Usage in Component
```ts
import { PynoDateModule, PynoDateService } from 'pyno-date';
export class AppComponent implements OnInit{
constructor(pynoDate: PynoDateService) {}
ngOnInit(){
// Convert Gregorian date to Jalali (Persian) date
console.log( this.pynoDate.gregorianToJalali(2025, 5, 28, '13:55') );
/*{
jYear: 1404,
jMonth: 3,
jDay: 4,
time: "13:55"
}*/
// Convert Jalali (Persian) date to Gregorian date
console.log( this.pynoDate.jalaliToGregorian(1404, 12, 26, '18:00') );
/*{
gYear: 2026,
gMonth: 3,
gDay: 17,
time: "18:00"
}*/
// Get current timestamp
console.log( this.pynoDate.time() ); //1748425678
// Get timestamp of a Gregorian or Jalali (Persian) date (and time)
console.log ( this.pynoDate.getTime( '2025-05-28 13:55' ), 'gregorian' ); //1748440500
console.log ( this.pynoDate.getTime( {year: 2025, month: 5, day: 28, time: '13:55'} ), 'gregorian' ); //1748440500
console.log ( this.pynoDate.getTime( '1404/03/25 14:57' ), 'jalali' ); //1749999420
console.log ( this.pynoDate.getTime( {year: 1404, month: 3, day: 25, time: '14:57'} ), 'jalali' ); //1748440500
//Get current Gregorian date in any format
console.log( this.pynoDate.gDate( 'Y-m-d H:i:s' ) ); // 2025-05-28 13:55:46
// Get Gregorian date from timestamp in any format:
console.log( this.pynoDate.gDate( 'F jS, Y - H:i', 1748440500 ) ); // May 28th, 2005 - 13:55
//Get current Jalali date in any format
console.log( this.pynoDate.jDate( 'Y/m/d H:i:s' ) ); // 1404/03/07 13:55:46
// Get Gregorian date from timestamp in any format:
console.log( this.pynoDate.jDate( 'l j F Y', 1748440500 ) ); // سه شنبه 24 خرداد 1404
}
}
```
---
## 🔧 Pipes
### 1. `jDate`
Converts a Gregorian date to Jalali.
```html
{{ '2025-03-21' | jDate }}
{{ '2025-03-21 13:55' | jDate }}
{{ '2025-03-21 13:55' | jDate: 'l j F Y' }}
{{ {year: 2005, month: 3, day: 21} | jDate: 'Y/m/d' }}
```
### 2. `gDate`
Converts a Jalali date to Gregorian.
```html
{{ '1404/01/01' | gDate }}
{{ '1404/01/01 13:55' | gDate }}
{{ '1404/01/01 13:55' | gDate: 'l j F Y' }}
{{ {year: 1404, month: 1, day: 1} | gDate: 'Y-m-d' }}
```
### 3. `jFormat`
Formats a Jalali date with a custom pattern.
```html
{{ '1404/01/01 13:55' | jFormat: 'Y-m-d' }}
{{ '1404/01/01 ' | jFormat: 'l j F Y' }}
```
### 4. `gFormat`
Formats a Gregorian date with a custom pattern.
```html
{{ '2025-03-21 13:55' | jFormat: 'Y/m/d' }}
{{ '2025-03-21 ' | jFormat: 'l j F Y' }}
```
---
## 📅 Format Reference
| Format | En Description | Fa Description | Gregorian Example | Jalali Example |
|--------|-------------------------------------------------------------|----------------------------------------|-----------------------------------------|-----------------------------------------|
| `d` | The two digit day of the month | روز ماه بصورت دو رقمی | `01` to `31` | `01` to `31` |
| `D` | A 3-letter textual representation of a day | حرف اول نام روز هفته | `Sun` to `Sat` | `ش` to `ج` |
| `j` | The day of the month without leading zeros | روز ماه بصورت یک رقمی یا دو رقمی | `1` to `31` | `1` to `31` |
| `l` | A full textual representation of a day | نام روز هفته | `Sunday` to `Saturday` | `شنبه` to `جمعه` |
| `N` | The ISO-8601 numeric representation of a day | عدد روز در هفته | `1` for Monday, `7` for Sunday | `1` برای یک شنبه، `7` برای شنبه |
| `S` | The English ordinal suffix for the day of the month | واژه `ام` برای بعد از عدد روز | `st` `nd` `rd` `th` | `ام` |
| `w` | A numeric representation of the day | عدد روز در هفته (فارسی) | `0` for Sunday, `7` for Saturday | `0` برای شنبه، `6` برای جمعه |
| `z` | The day of the year | عدد روز در سال | From `0` to `365` | From `0` to `365` |
| `W` | The ISO-8601 week number of year (weeks starting on Monday) | عدد دورقمی هفته در سال | From `00` to `53` | From `00` to `53` |
| `F` | A full textual representation of a month | نام کامل ماه | `January` to `December` | `فروردین` to `اسفند` |
| `m` | A two-digit representation of a month | عدد ماه بصورت دورقمی | `01` to `12` | `01` to `12` |
| `M` | A 3-letter representation of a month | نام مختصر ماه | `Jan` to `Dec` | `فر` to `اس` |
| `n` | A numeric representation of a month, without leading zeros | عدد ماه | `1` to `12` | `1` to `12` |
| `t` | The number of days in the given month | تعداد روز در ماه | `28` to `31` | `29` to `31` |
| `L` | Whether it's a leap year | سال کبیثه | `1` if it is a leap year, `0` otherwise | `1` if it is a leap year, `0` otherwise |
| `o` | The ISO-8601 year number | سال هفته ای (به عدد) چهار رقمی | `2025` | `1404` |
| `Y` | A four digit representation of a year | سال (به عدد) چهار رقمی | `2025` | `1404` |
| `y` | A two digit representation of a year | | ` 25` | `04` |
| `a` | Lowercase am or pm | خلاصه قبل از ظهر یا بعد از ظهر | `am` `pm` | `ق.ظ` `ب.ظ` |
| `A` | Uppercase AM or PM | قبل از ظهر و بعد از ظهر | `AM` `PM` | `قبل از ظهر` `بعد از ظهر` |
| `g` | 12-hour format of an hour | ساعت در روز - 12 ساعته | `1` to `12` | `1` to `12` |
| `G` | 24-hour format of an hour | ساعت در روز - 24 ساعته | `0` to `23` | `0` to `23` |
| `h` | A two digit 12-hour format of an hour | ساعت در روز - 12 ساعته - دو رقمی | `01` to `12` | `01` to `12` |
| `H` | A two digit 24-hour format of an hour | ساعت در روز - 24 ساعته - دو رقمی | `01` to `23` | `01` to `23` |
| `i` | A two digit representation of a minute | دقیقه بصورت دورقمی | `00` to `59` | `00` to `59` |
| `s` | A two digit representation of a second | ثانیه بصورت دورقمی | `00` to `59` | `00` to `59` |
| `O` | Difference to Greenwich time (GMT) in hours | تفاوت زمانی با گرینویج به ساعت | `+0100` | `+0100` |
| `P` | Difference to Greenwich time (GMT) in hours:minutes | تفاوت زمانی با گرینویچ به ساعت و دقیقه | `+01:30` | `+01:30` |
| `c` | The ISO-8601 date | فرمت استاندارد تاریخ و ساعت | `2025-05-31 16:34:42` | `1404/03/10 16:34:42` |
| `C` | Century number | شماره قرن | `21` | `15` |
| `r` | The RFC 2822 formatted date | فرمت استاندارد روز، تاریخ و ساعت | `Fri, 12 Apr 2025 12:01:05` | `جمعه، 10 خرداد 1404 16:34:42` |
| `U` | The seconds since the Unix Epoch | ثانیه از زمان شروع Unix | `1748688816` | `1748688816` |
---
## 🧠 License
MIT
d