Backendها و سریالسازی
یک DoranDate یک لحظهٔ واحد است. آن را بهصورت جلالی به کاربران نشان دهید؛ و بهصورت میلادی UTC به سرور بفرستید. یک لحظه، دو نما — به مدل ذهنی مراجعه کنید.
ارسال تاریخ به backend
ts
// ✅ toISOString() میلادی UTC است — مستقیماً امن برای POST
await api.post('/events', { date: d.toISOString() });
// ✅ همزمان جلالی را به کاربر نشان دهید
<span>{d.format('YYYY/MM/DD')}</span>;
// ✅ JSON.stringify هم امن است — toJSON() میلادی UTC تولید میکند
const body = JSON.stringify({ date: d });خواندن دوبارهٔ تاریخ (رفتوبرگشت)
ts
const iso = d.toISOString(); // "2026-06-01T08:00:00.000Z"
const restored = DoranDate.fromGregorian(new Date(iso));
restored.isSame(d); // true — بدون اتلاف رفتوبرگشت میکندtoISOString() در برابر toJalaliISO()
| متد | خروجی | کاربرد |
|---|---|---|
toISOString() | 2026-06-01T08:00:00.000Z | backendها، APIها، دیتابیسها |
toGregorianISO() | مانند toISOString() | نام مستعار صریح وقتی قصد مهم است |
toJalaliISO() | ۱۴۰۵-۰۳-۱۱T۱۱:۳۰:۰۰+۰۳:۳۰ | فقط نمایش / لاگ |
مقدار toJalaliISO() را به API نفرستید
toJalaliISO() یک نمایش جلالی برای انسان است (اغلب با ارقام فارسی و آفست محلی). این یک فرمت تبادل استاندارد نیست — یک backend که انتظار ISO-8601 دارد آن را رد میکند یا بدتر، خاموش اشتباه تجزیه میکند. همیشه با toISOString() سریالسازی کنید.
چرا این امن است
toISOString() و toJSON() هر دو به new Date(epochMs).toISOString() نیتیو واگذار میشوند، پس بایتهایی که میفرستید دقیقاً همان چیزی است که هر کتابخانهٔ تاریخ JS دیگری تولید میکند. تقویم جلالی صرفاً یک لایهٔ نمایش روی همان لحظهٔ زیرین است.