ابزارهای فارسی
تاریخ شمسی، ارقام فارسی، قالببندی اعداد و اعتبارسنجی؛ بدون وابستگی و برای هر فریمورکی.
پکیج @kashi-ui/persian هیچ وابستگیای ندارد و در مرورگر، Node.js و هر فریمورکی (React، Vue، Svelte، Angular) کار میکند. کامپوننتهای فارسی کاشی هم روی همین پکیج ساخته شدهاند.
npm i @kashi-ui/persianتاریخ شمسی
import { toJalali, toGregorian, formatJalali, parseJalali } from "@kashi-ui/persian";
toJalali(new Date(2024, 7, 2)); // { jy: 1403, jm: 5, jd: 12 }
toGregorian(1403, 5, 12); // Date: 2024-08-02
formatJalali(date); // "۱۴۰۳/۰۵/۱۲"
formatJalali(date, { style: "long" }); // "۱۲ مرداد ۱۴۰۳"
formatJalali(date, { style: "full" }); // "جمعه ۱۲ مرداد ۱۴۰۳"
parseJalali("۱۴۰۳/۵/۱۲"); // Date
parseJalali("1404/12/30"); // null (۱۴۰۴ کبیسه نیست)
| تابع | کاربرد |
|---|---|
toJalali(date) |
میلادی به شمسی |
toGregorian(jy, jm, jd) |
شمسی به Date |
formatJalali(date, options) |
نمایش؛ سبک numeric، long یا full |
parseJalali(text) |
خواندن متن کاربر؛ ارقام فارسی و جداکنندههای /، - و . |
isLeapJalaliYear(jy) |
سال کبیسه |
jalaliMonthLength(jy, jm) |
تعداد روزهای ماه |
isValidJalaliDate(jy, jm, jd) |
وجود تاریخ |
jalaliWeekday(date) |
روز هفته؛ ۰ = شنبه |
toISODate(date) |
YYYY-MM-DD بر اساس وقت محلی، برای ارسال به سرور |
fromISODate(text) |
YYYY-MM-DD به Date محلی |
JALALI_MONTHS، WEEKDAYS |
نام ماهها و روزها |
هشدار منطقهٔ زمانی: برای ارسال تاریخ به سرور از
date.toISOString()استفاده نکنید. این تابع زمان را به UTC تبدیل میکند و چون ایران ۳٫۵ ساعت جلوتر است، نیمهشب را روز قبل میکند. بهجای آن ازtoISODate(date)استفاده کنید.
دقت: تبدیل برای همهٔ ۷۲٬۹۷۰ روز از ۱۳۰۰ تا ۱۵۰۰ با تقویم persian کتابخانهٔ ICU (همان تقویم مرورگرها) مقایسه و تست شده است.
ارقام و اعداد
import { toFaDigits, toEnDigits, onlyDigits, formatNumber } from "@kashi-ui/persian";
toFaDigits(1403); // "۱۴۰۳"
toEnDigits("۰۹۱۲ ٣٤٥"); // "0912 345" (ارقام عربی هم)
onlyDigits("۰۹۱۲-۳۴۵ 67"); // "091234567"
formatNumber(1250000); // "۱٬۲۵۰٬۰۰۰"
toEnDigits را همیشه پیش از ذخیرهٔ ورودی کاربر استفاده کنید؛ کاربر ایرانی ممکن است با هر دو صفحهکلید تایپ کند.
عدد به حروف
import { numberToWords } from "@kashi-ui/persian";
numberToWords(1250000); // "یک میلیون و دویست و پنجاه هزار"
numberToWords(1001); // "هزار و یک"
numberToWords(-45); // "منفی چهل و پنج"
یکدستسازی متن
کاربران با صفحهکلید عربی «ي» و «ك» تایپ میکنند و جستجوی «علی» دیگر «علي» را پیدا نمیکند. پیش از ذخیره و جستجو، متن را یکدست کنید:
import { normalizePersian } from "@kashi-ui/persian";
normalizePersian("علي كريمي"); // "علی کریمی"
normalizePersian("مـــدرسه"); // "مدرسه" (حذف کشیده)
normalizePersian("كتاب ١٢", { digits: "fa" }); // "کتاب ۱۲"
اعتبارسنجی
import { isValidNationalId, isValidCardNumber, getBankByCard, formatCardNumber } from "@kashi-ui/persian";
isValidNationalId("0013542419"); // true
isValidIban("IR062960000000100324200001");
isValidMobile("+98 912 345 6789"); // true
getMobileOperator("0935")?.name; // "ایرانسل"
isValidCardNumber("4111111111111111"); // true
getBankByCard("610433"); // { name: "بانک ملت", slug: "mellat" }
formatCardNumber("6104331234"); // "6104 3312 34"