
Security News
Axios Supply Chain Attack Reaches OpenAI macOS Signing Pipeline, Forces Certificate Rotation
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.
ni-datetime
Advanced tools
Converter class for Farsi/Persian/Khorshidi, Islamic to Gregorian and vise versa.
Converter class for Jalali/Farsi/Persian to Gregorian and vise versa.
Note: Months are started from 1.
npm i ni-datetime
const jalali = new NiJalaliDatetime(new Date());
console.log(jalali.__date); // internal date object
console.log(jalali.ymd); // eg: {year:1390, month:1, date:12}
jalali.ymd = {year: 1360, month: 9, date: 12}
console.log(jalali.__date); // internal date object is changed
console.log(jalali.use(new Date()).ymd); // set to now and get ymd
console.log(formatDate(jalali, Locales.fa_AF, "WWWW DD MMMM YYYY")); // eg: شنبه 9 قوس 1390
// -----------------------------------------
const gregorian = new NiGregorianDatetime(new Date());
console.log(gregorian.__date); // internal date object
console.log(gregorian.ymd); // eg: {year:1980, month:1, date:12}
gregorian.ymd = {year: 2020, month: 9, date: 12}
console.log(gregorian.__date); // internal date object is changed
console.log(gregorian.use(new Date()).ymd); // set to now and get ymd
console.log(formatDate(gregorian, Locales.en_US, "WWWW DD MMMM YYYY")); // eg: Monday 20 January 2020
// wrapper for jalali date
export class NiJalaliDatetime extends NiDatetime { }
// wrapper for islamic date
export class NiIslamicDatetime extends NiDatetime { }
// wrapper for gregorian date
export class NiGregorianDatetime extends NiDatetime { }
// use to format a NiDatetime object
export const formatDate = (calendar: NiDatetime,
locale: NiDatetimeLocale,
format: string): string => { }
// list of available locales
export const Locales = {
fa_AF: NiJalaliDatetime,
fa_IR: NiJalaliDatetime,
ar_SA: NiIslamicDatetime,
en_US: NiGregorianDatetime
};
// base case
export class NiDatetime {
__date: Date;
constructor(date?: Date) { }
use(date: Date) : NiDatetime { }
get year() : number;
get month() : number;
get date() : number;
get daysInMonth() : number;
get weeksFirstday() : number;
get weekDay() : number;
set ymd(ymd: Ymd) { }
get ymd() : Ymd { }
get hours12() : number { }
get hours() : number { }
set hours(hours: number) { }
get minutes() : number { }
set minutes(minutes: number) { }
get seconds() : number { }
set seconds(seconds: number) { }
get am() : boolean { }
set am(toggle: boolean) { }
get pm() : boolean { }
set pm(toggle: boolean) { }
clone() : NiDatetime;
}
export class Ymd {
year : number;
month : number;
date : number;
}
export class Hms {
hours : number;
minutes : number;
seconds : number;
isPM : boolean;
}
export const Locales = {
fa_AF: {
name: 'fa_AF',
new: () => new NiJalaliDatetime(),
week: '#',
dir: 'rtl',
firstday: 6,
weekends: [5],
daysName: ['یکشنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'],
daysNameShort: ['یک', 'دو', 'سه ', 'چهار', 'پنج', 'جمعه', 'شنبه'],
daysNameMini: ['ی', 'د', 'س', 'چ', 'پ', 'ج', 'ش'],
monthsName: ['حمل', 'ثور', 'جوزا', 'سرطان', 'اسد', 'سنبله', 'میزان', 'عقرب', 'قوس', 'جدی', 'دلو', 'حوت'],
monthsNameShort: ['حم', 'ثو', 'جو', 'سر', 'اس', 'سن', 'می', 'عق', 'قو', 'جد', 'دل', 'حو'],
ampm: ['ق.ظ', 'ب.ظ'],
AMPM: ['قبل از ظهر', 'بعد از ظهر'],
today: 'امروز',
clear: 'پاک'
},
fa_IR: {
name: 'fa_IR',
new: () => new NiJalaliDatetime(),
week: '#',
dir: 'rtl',
firstday: 6,
weekends: [5],
daysName: ['یکشنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'],
daysNameShort: ['یک', 'دو', 'سه ', 'چهار', 'پنج', 'جمعه', 'شنبه'],
daysNameMini: ['ی', 'د', 'س', 'چ', 'پ', 'ج', 'ش'],
monthsName: ['فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور',
'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'],
monthsNameShort: ['فر', 'ار', 'خر', 'تی', 'مر', 'شه', 'مه', 'آب', 'آذ', 'دی', 'به', 'اس'],
ampm: ['ق.ظ', 'ب.ظ'],
AMPM: ['قبل از ظهر', 'بعد از ظهر'],
today: 'امروز',
clear: 'پاک'
},
ar_SA: {
name: 'ar_SA',
new: () => new NiIslamicDatetime(),
week: '#',
dir: 'rtl',
firstday: 0,
weekends: [5, 6],
daysName: ['الأحد', 'الإثنين', 'الثُلاثاء', 'الأربعاء', 'الخميس', 'الجُمْعَة', 'السبت'],
daysNameShort: ['أحد', 'إثنين', 'ثُلاثاء', 'أربعاء', 'خميس', 'جُمْعَة', 'سبت'],
daysNameMini: ['ح', 'ث', 'ثُ', 'ع', 'خ', 'جُ', 'س'],
monthsName: ['محرم', 'صفر', 'ربيع الأول', 'ربيع الثاني', 'جمادى الأولى',
'جمادى الآخرة', 'رجب', 'شعبان', 'رمضان', 'شوال', 'ذوالقعدة', 'ذوالحجة'],
monthsNameShort: ['محرم', 'صفر', 'ربيع ١', 'ربيع ٢', 'جمادى ١',
'جمادى ٢', 'رجب', 'شعبان', 'رمضان', 'شوال', 'ذو القعدة', 'ذو الحجة'],
ampm: ['ق.ظ', 'ب.ظ'],
AMPM: ['قبل الظهر', 'بعد الظهر'],
today: 'اليوم',
clear: 'نظيف'
},
en_US: {
name: 'en_US',
new: () => new NiGregorianDatetime(),
week: 'Wk',
dir: 'ltr',
firstday: 1,
weekends: [6, 0],
daysName: ['Sunday', 'Monday', 'Tuesday', 'Wedsday', 'Thursday', 'Friday', 'Saturday'],
daysNameShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
daysNameMini: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
monthsName: ['January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December'],
monthsNameShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
ampm: ['am', 'pm'],
AMPM: ['AM', 'PM'],
today: 'Today',
clear: 'Clear'
}
};
// use to convert Date(and time) to another timezone
// Note: this change time property of date, so if you call
// timezone related functions on the returning date
// it will still show your local timezone.
// eg: Fri Feb 21 2020 18:59:51 GMT-0500 (GMT-05:00)
// this part can't be changed =>^^^^^^^^^^^^^^^^^^^^
// but the date and time part is changed.
export const toTimezone = (date: Date,
targetTimezoneUTCOffset?: number): Date => {}
'YYYY', 4 digit year'YY', 2 digit year'MMMM', long name of month 'MMM', short name of month 'MM', 2 digit month number'M', month number'DD', 2 digit date number'D', date number'WWWW', long name of week's day'WWW', short name of week's day'WW', mini name of week's day'HH', 2 digit hour (24h format)'hh', 2 digit hour (12h format)'H', hour (24h format)'h', hour (12h format)'mm', 2 digit minute'm', minute'ss', 2 digit second's', second'A', upper case AM/PM'a', lower case am/pm'z', time zone (eg: GMT-0500)'iso', iso format (eg: 2020-01-17T08:57:58.144Z)'mediumDate': 'WWW DD MMM, YYYY''mediumTime': 'hh:mm a''shortDate': 'YY/M/D''shortTime': 'h:m a''longDate': 'WWWW DD MMMM YYYY''longTime': 'hh:mm:ss A''medium': 'mediumDate mediumTime''short': 'shortDate shortTime''long': 'longDate longTime'FAQs
Converter class for Farsi/Persian/Khorshidi, Islamic to Gregorian and vise versa.
The npm package ni-datetime receives a total of 13 weekly downloads. As such, ni-datetime popularity was classified as not popular.
We found that ni-datetime demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.

Security News
Open source is under attack because of how much value it creates. It has been the foundation of every major software innovation for the last three decades. This is not the time to walk away from it.

Security News
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.