- Notifications
You must be signed in to change notification settings - Fork1
Parse and interact with jalali date
License
SaeedDev94/jalali-ts
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Parse and interact with jalali date
This lib inspired bymoment-jalaali
Thanks to all contributors
You may ask yourself we already havemoment-jalaali
which is even more powerful in some cases!
So whyjalali-ts
?
Becausemoment
is a legacy project and according to its document you should avoid using it in the new projects!
Pros:
- No dependencies!
- TypeScript
- Modern JavaScript (ES2020)
Cons:
- Limitation for parsing input date
- Limitation for output format
npm install jalali-ts
YYYY
yearMM
monthDD
dateHH
hours (standard 24h)hh
hours (12h format)mm
minutesss
secondsSSS
millisecondsa
meridian (am, pm)A
meridian (AM, PM)
import{Jalali}from'jalali-ts';Jalali.now().format('YYYY/MM/DD hh:mm:ss A');
To parse a jalali date you should followyear month date [hours minutes seconds ms]
pattern:
import{Jalali}from'jalali-ts';constjalali=Jalali.parse('1398/12/04');jalali.valueOf();// 1582403400000jalali.gregorian();// 2020-02-23 00:00:00jalali.toString();// 1398/12/04 00:00:00jalali.isLeapYear();// falsejalali.monthLength();// 29jalali.add(2,'month').add(1,'week');// 1399/02/11 00:00:00jalali.startOf('week');// 1399/02/06 00:00:00jalali.dayOfYear();// 37jalali.endOf('year');// 1399/12/30 23:59:59jalali.isLeapYear();// truejalali.add(1,'day').startOf('day');// 1400/01/01 00:00:00constdateTime=Jalali.parse('1398/12/04 02:30:07:05 PM');dateTime.valueOf();// 1582455607050dateTime.getHours();// 14dateTime.getMinutes();// 30dateTime.getSeconds();// 7dateTime.getMilliseconds();// 50dateTime.gregorian('YYYY-MM-DD HH:mm:ss.SSS');// 2020-02-23 14:30:07.050constdateTimeNoMilliseconds=Jalali.parse('1398/12/04 02:30:07:05 PM',false);dateTimeNoMilliseconds.valueOf();// 1582455607000dateTimeNoMilliseconds.getMilliseconds();// 0dateTimeNoMilliseconds.gregorian('YYYY-MM-DD HH:mm:ss.SSS');// 2020-02-23 14:30:07.000
If you rely on timestamp please make sure your environment time zone is correct:
process.env.TZ='UTC';// The default time zone for servers!+Jalali.parse('1399-02-02 08:30:00 PM');// 1587501000000process.env.TZ='Asia/Tehran';+Jalali.parse('1399-02-02 08:30:00 PM');// 1587484800000
As you can see there is16200000
ms offset (UTC+04:30
) for a same datetime string!jalali-ts
checks your system time zone and if it's not equal toJalali.defaultTimeZone = 'Asia/Tehran'
it will print a warning about it.
To disable time zone check:
Jalali.checkTimeZone=false;
If you want to change time zone value:
Jalali.timeZone='Asia/Kabul';
Note
If running env is nodeJalali.timeZone = 'value'
Will change system time zone!
If you don't wantjalali-ts
touch your system time zone (node process):Jalali.setTimeZone=false;