سورس کد تبدیل تاریخ شمسی — 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))    ' «یک‌شنبه ۲۲ شهریور ۱۴۰۵»

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

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

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