سورس کد تبدیل تاریخ شمسی — B4A + پایتون + جاوااسکریپت + PHP

# 📅 سورس کد تبدیل تاریخ شمسی — کامل و تست‌شده

یک ماژول آماده و حرفه‌ای برای تبدیل دوطرفه تاریخ شمسی و میلادی، همراه با سه نسخه پاداش در پایتون، جاوااسکریپت و PHP.

---

## ✅ چرا این سورس با بقیه فرق دارد؟

بیشتر سورس‌های تبدیل تاریخ که در بازار پیدا می‌کنید از یک تقریب ساده استفاده می‌کنند: «هر ۳۳ سال، ۸ سال کبیسه». این روش روی بازه‌های بلند **یک روز خطا می‌دهد** و خروجی‌اش با تقویم رسمی ایران نمی‌خواند.

این محصول از **الگوریتم رسمی تقویم هجری شمسی** (روش خیام — همان مبنای کتابخانه‌های معتبر جهانی مثل jalaali-js) استفاده می‌کند.

و مهم‌تر: **اعتبارسنجی شده است.** در فرایند ساخت، ۵۵٬۱۵۲ روز به‌صورت رفت‌و‌برگشت تبدیل شد — صفر خطا.

| تست | تعداد | نتیجه |

|---|---|---|

| رفت‌و‌برگشت شمسی ↔ میلادی | ۵۵٬۱۵۲ روز | صفر خطا |

| تطابق روز هفته با تقویم استاندارد | ۱۰٬۹۵۷ روز | صفر خطا |

| نوروز سال‌های ۱۳۷۹ تا ۱۴۰۵ | ۲۷ سال | دقیق |

| روز اول فروردین هر سال | ۱۱۷۸ تا ۱۶۳۳ | صفر خطا |

| سال‌های کبیسه | ۲۴ سال آزمون | دقیق |

---

## 🎁 چه چیزی دریافت می‌کنید؟

### نسخه اصلی — B4A (Basic4Android)

- `JalaliDate.bas` — ماژول کامل با توضیحات فارسی خط‌به‌خط

- `Main.bas` — اپ نمونه با رابط کاربری آماده

- بدون نیاز به فایل لایوت — رابط کاربری کامل در کد ساخته می‌شود

### سه نسخه هدیه

- 🐍 **پایتون ۳** — `jalali.py` — بدون هیچ وابستگی بیرونی

- 🟨 **جاوااسکریپت** — `jalali.js` — مرورگر، Node.js، React، Vue

- 🐘 **PHP 8** — `jalali.php` — با تابع کمکی مخصوص وردپرس

هر سه نسخه با فایل تست کامل همراه‌اند و همین الان قابل اجرا هستند.

---

## ✨ امکانات

- 🔄 تبدیل دوطرفه شمسی ↔ میلادی

- 🗓️ کبیسه‌شناسی دقیق و مطابق تقویم رسمی ایران

- 📛 نام ماه، روز هفته و فصل به فارسی

- 🔢 تبدیل ارقام فارسی ↔ لاتین

- 💰 جداکننده هزارگان با ارقام فارسی (۱,۲۳۴,۵۶۷)

- ✅ اعتبارسنجی — تاریخ `۱۴۰۲/۱۲/۳۰` را قبول نمی‌کند (چون وجود ندارد)

- 🔍 تجزیه متن — `۱۴۰۵/۰۶/۲۲` و `1405-6-22` و `1405.6.22` و `1405/6/22`

- ➕ محاسبات — افزودن روز، فاصله دو تاریخ، تبدیل به بازه خوانا

- 🎨 قالب‌بندی دلخواه — `dddd j jjj jjjj` ← «یک‌شنبه ۲۲ شهریور ۱۴۰۵»

- 📴 کاملاً آفلاین — بدون API، بدون اینترنت، بدون کتابخانه بیرونی

- 🌐 سال ۱۱۷۸ تا ۱۶۳۳ شمسی (حدود ۴۵۵ سال)

---

## 💻 نمونه کد

**B4A:**

```

Dim j As Jalali = JalaliDate.Today

Log(JalaliDate.FullName(j)) ' «یک‌شنبه ۲۲ شهریور ۱۴۰۵»

Dim g As Gregorian = JalaliDate.ToGregorian(1405, 6, 22)

Log(g.Year & "-" & g.Month & "-" & g.Day) ' 2026-9-13

```

**پایتون:**

```

from jalali import Jalali

j = Jalali(1405, 6, 22)

print(j.full_name) # «یک‌شنبه ۲۲ شهریور ۱۴۰۵»

print(j.to_gregorian()) # (2026, 9, 13)

```

**PHP (مخصوص وردپرس):**

```

require_once 'jalali.php';

echo Jalali::format(Jalali::today(), 'dddd j jjj jjjj');

echo Jalali::wpDate(get_the_time('U'));

```

---

## 📦 محتویات بسته

```

TaghirTarikh/

├── Main.bas اپ نمونه با رابط کاربری

├── Modules/JalaliDate.bas ★ ماژول اصلی

├── Bonus/python/jalali.py

├── Bonus/javascript/jalali.js

├── Bonus/php/jalali.php

├── Bonus/*/test_* تست‌های آماده اجرا

├── README.md راهنمای کامل فارسی

└── گزارش-تست-کامل.txt خروجی تمام تست‌ها

```

---

## 🛠️ پیش‌نیازها

| پلتفرم | نیاز |

|---|---|

| B4A | نسخه ۹ به بالا + کتابخانه‌های `Core` و `Regex` |

| پایتون | نسخه ۳.۶ به بالا — بدون وابستگی |

| جاوااسکریپت | هر مرورگر مدرن یا Node.js 6+ |

| PHP | نسخه ۷.۰ به بالا — بدون افزونه |

---

## 🎯 مناسب برای

- اپلیکیشن‌های فروشگاهی، حسابداری و مدیریتی

- فرم‌های ثبت تاریخ تولد، قرار و تاریخ انقضا

- نمایش تاریخ شمسی روی ویجت یا نوتیفیکیشن

- سایت‌های وردپرسی فارسی

- هر پروژه‌ای که تاریخ شمسی درست می‌خواهد

---

## 📄 مجوز

استفاده در پروژه‌های شخصی و تجاری شما آزاد است، بدون محدودیت تعداد.

فروش مجدد یا انتشار به‌عنوان محصول مستقل مجاز نیست.

---

💬 سوالی دارید؟ از بخش تماس با ما یا تیکت پشتیبانی پیام بدهید.

دسته‌بندیسورس کد اندروید
تعداد بازدید۵۱
تعداد فروش۰
فرمت تحویلفایل دانلودی (بعد از پرداخت آنی فعال می‌شود)
پشتیبانیتیکت پشتیبانی در پنل کاربری

ویژگی‌های کلیدی

  • تبدیل دوطرفه شمسی ↔ میلادی
  • الگوریتم رسمی تقویم هجری (روش خیام) — بدون خطای کبیسه
  • تست‌شده روی ۵۵٬۱۵۲ روز رفت‌و‌برگشت — صفر خطا
  • چهار زبان: B4A، پایتون، جاوااسکریپت، PHP
  • نام ماه، روز هفته و فصل به فارسی
  • تبدیل ارقام فارسی ↔ لاتین + جداکننده هزارگان
  • اعتبارسنجی تاریخ (۱۴۰۲/۱۲/۳۰ را قبول نمی‌کند)
  • افزودن روز، فاصله دو تاریخ، بازه خوانا
  • قالب‌بندی دلخواه با الگوی ساده
  • aپ نمونه B4A با رابط کاربری آماده — بدون فایل لایوت
  • مستندات کامل فارسی + مرجع تمام توابع
  • کاملاً آفلاین — بدون API و بدون کتابخانه بیرونی

هنوز نظری ثبت نشده است. اولین نفر باشید!

برای ثبت نظر وارد شوید. (ثبت نظر پس از خرید فعال می‌شود)

B4A — کد نمونه رایگان این تکه‌کد را می‌توانید مستقیم در پروژه بیسیک۴اندروید استفاده کنید
' ═══ نمونه‌ای از سورس (بخش کوتاهی از ماژول) ═══
' تبدیل میلادی → شمسی

Public Sub FromParts(gy As Int, gm As Int, gd As Int) As Jalali
    Return JDNToJalali(GregorianToJDN(gy, gm, gd))
End Sub

' الگوریتم با شماره روز جولیَن (JDN) کار می‌کند:
' یک عدد پیوسته که تبدیل را بدون دردسر تقویمی می‌کند.
Private Sub JalaliToJDN(jy As Int, jm As Int, jd As Int) As Long
    Dim march As Int = MarchDay(jy)
    Dim jdn As Long = GregorianToJDN(jy + 621, 3, march)
    jdn = jdn + (jm - 1) * 31 - ((jm \ 7) * (jm - 7)) + jd - 1
    Return jdn
End Sub

' ── استفاده ──
Dim j As Jalali = JalaliDate.Today
Log(JalaliDate.FullName(j))    ' «یک‌شنبه ۲۲ شهریور ۱۴۰۵»

⚠ در نسخه کامل توضیحات خط‌به‌خط فارسی و ۳۵ تابع مستند دارد.

محصولات مشابه

تخصصی بیسیک۴اندرویدسورس‌کد آمادهآموزش گام‌به‌گامکتابخانه‌های کاربردیتحویل آنی بعد از پرداختپشتیبانی واقعی ۲۴/۷بروزرسانی رایگان+۱۰۲۴ محصول فعال