کد تبدیل تاریخ میلادی به شمسی – آموزش جامع در اکسل و سایر برنامه ها
در بیشتر زبانهای برنامهنویسی و نرم افزار اکسل تقویم میلادی بهصورت پیشفرض قرار دارد. اما کاربران فارسی زبان برای ثبت و درک بهتر اسناد مالی، مدیریت پروژه، گزارشگیری و توسعه نرمافزار نیاز به تقویم شمسی دارند. نوشتن کدهای برنامهنویسی یکی از روشهای دقیق تبدیل کردن تاریخهای میلادی به شمسی است. در این مطلب از مجله فرادرس با ارائه نمونه کد تبدیل تاریخ میلادی به شمسی، روش اجرای هر کد در نرمافزارهای اکسل، گوگلشیت و زبانهای برنامهنویسی PHP، جاوا اسکریپت، سیشارپ و پایتون را یاد میگیریم.
- میآموزید چگونه تاریخ میلادی را با کدنویسی در اکسل به تاریخ شمسی تبدیل کنید.
- با روش اجرای کد تبدیل تاریخ میلادی به شمسی در گوگل شیت آشنا میشوید.
- یاد میگیرید با استفاده از پایتون تاریخهای میلادی را به فرمت شمسی تغییر دهید.
- درک میکنید چگونه با کد PHP تاریخ میلادی را به تاریخ شمسی تبدیل کنید.
- میآموزید در جاوا اسکریپت فرمولی برای تبدیل تاریخ میلادی به شمسی پیادهسازی کنید.
- یاد میگیرید با استفاده از سیشارپ تاریخهای میلادی را به فرمت شمسی بازگردانید.


کد تبدیل تاریخ میلادی به شمسی در اکسل
یکی از بهترین روشها برای تبدیل کردن تاریخ میلادی به تقویم شمسی در نرمافزار اکسل استفاده از برنامهنویسی VBA است. با وارد کردن کد مخصوص در «VBA Editor»، اکسل یک تابع سفارشی برای تبدیل تاریخ میسازد. نمونه کد تبدیل تاریخ میلادی به شمسی در اکسل به شرح زیر است.
Function MiladiToShamsi(gy As Long, gm As Long, gd As Long) As String
Dim g_d_m(11) As Integer
Dim jy As Long, jm As Long, jd As Long
Dim gy2 As Long, days As Long, v As Long, i As Long
g_d_m(0) = 0
g_d_m(1) = 31
g_d_m(2) = 28
g_d_m(3) = 31
g_d_m(4) = 30
g_d_m(5) = 31
g_d_m(6) = 30
g_d_m(7) = 31
g_d_m(8) = 31
g_d_m(9) = 30
g_d_m(10) = 31
g_d_m(11) = 30
If gm > 2 Then
gy2 = gy
Else
gy2 = gy - 1
End If
days = 355666 + (365 * gy) + ((gy2 + 3) \ 4) - ((gy2 + 99) \ 100) + ((gy2 + 399) \ 400) + gd
For i = 0 To gm - 1
days = days + g_d_m(i)
Next i
If (gm > 2) And (((gy Mod 4 = 0) And (gy Mod 100 <> 0)) Or (gy Mod 400 = 0)) Then
days = days + 1
End If
jy = -1595 + (33 * (days \ 12053))
days = days Mod 12053
jy = jy + (4 * (days \ 1461))
days = days Mod 1461
If days > 365 Then
jy = jy + ((days - 1) \ 365)
days = (days - 1) Mod 365
End If
If days < 186 Then
jm = 1 + (days \ 31)
jd = 1 + (days Mod 31)
Else
jm = 7 + ((days - 186) \ 30)
jd = 1 + ((days - 186) Mod 30)
End If
MiladiToShamsi = jy & "/" & jm & "/" & jd
End Functionمراحل اجرای کد
اجرای کد نمونه تبدیل تاریخ میلادی به شمسی با زبان برنامهنویسی VBA در اکسل بسیار ساده است. با این حال برای یادگیری اصول اولیه کدنویسی پیشنهاد میکنیم فیلم آموزش برنامهنویسی VBA در اکسل در فرادرس را نیز مشاهده کنید.
اما برای اجرای کد تبدیل تاریخ در نرم افزار اکسل سه مرحله زیر را انجام میدهیم.
- فشردن کلید «Alt+F11»
- ورود به بخش «Module»
- فراخوان کد در سلول
در ادامه، اجرای هر یک از مراحل را به شکل تصویری توضیح میدهیم.

۱. با فشار دادن همزمان دو کلید Alt+F11 وارد «VBA Editor» میشویم.

۲. بعد از ورود به زبانه «Insert» و بخش «Module» کد را وارد میکنیم.

۳. در یک سلول خالی تابع سفارشی ایجاد شده با کد را با دستور زیر فراخوان میکنیم.
=MiladiToShamsi(YEAR(نشانی سلول),MONTH(نشانی سلول),DAY(نشانی سلول))در این فرمول، عبارت داخل پرانتز نشانی سلولی است که تاریخ میلادی در آن قرار دارد. به عنوان مثال اگر تاریخ میلادی در سلول A1 قرار دارد، فرمول به شکل زیر در میآید.
=MiladiToShamsi(YEAR(A1),MONTH(A1),DAY(A1))بعد از ورود فرمول و زدن دکمه «Enter» تاریخ میلادی به شمسی نمایش داده میشود.
البته روشهای دیگری نیز برای این کار در اکسل وجود دارد که برای یادگیری آن پیشنهاد میکنیم فیلم آموزش رایگان تبدیل تاریخ میلادی به شمسی در اکسل در فرادرس را مشاهده کنید. همچنین مطلب زیر راهنمای کاملی در این خصوص برای تمام نسخههای نرمافزار اکسل است.
کد تبدیل تاریخ میلادی به شمسی در گوگل شیت
در گوگلشیت نیز برای تحلیل بهتر دادهها در کارهای گروهی و ارائه گزارشها، استفاده از تاریخ شمسی اهمیت دارد. بهعنوان مثال گزارشهای فروش یا نمایش دادهها در فرمها برای کاربران ایرانی فقط با تاریخ شمسی مفهوم دارد و تبدیل تاریخ میلادی به شمسی درک آنها را ساده میکند.
نمونه کد تبدیل تاریخ میلادی به شمسی در گوگلشیت به شرح زیر است.
function toJalali(gy, gm, gd) {
var g_d_m = [0,31,59,90,120,151,181,212,243,273,304,334];
var gy2 = (gm > 2) ? (gy) : (gy - 1);
var days = 355666 + (365*gy) + Math.floor((gy2+3)/4) - Math.floor((gy2+99)/100) + Math.floor((gy2+399)/400) + gd + g_d_m[gm-1];
var jy = -1595 + 33*Math.floor(days/12053);
days = days % 12053;
jy += 4*Math.floor(days/1461);
days = days % 1461;
if(days > 365){
jy += Math.floor((days-1)/365);
days = (days-1) % 365;
}
var jm, jd;
if(days < 186){
jm = 1 + Math.floor(days/31);
jd = 1 + (days % 31);
} else {
jm = 7 + Math.floor((days-186)/30);
jd = 1 + ((days-186) % 30);
}
return jy + "/" + jm + "/" + jd;
}
مراحل اجرای کد
برای اجرای کد در فرم شامل تاریخ میلادی مراحل زیر را انجام میدهیم.
۱. از منوی بالای کاربرگ گوگلشیت وارد بخش «Extension» و «Apps Script» میشویم.

۲. کد را در پنجره باز شده وارد میکنیم و برای ذخیره آن کلید Ctrl+S را فشار میدهیم.

۳. در سلول دلخواه از شیت، فرمول کلی زیر را با توجه به تاریخ میلادی وارد میکنیم.
=toJalali(Year,Month,Day)بهعنوان مثال تاریخ دلخواه میلادی =toJalali(2025,9,23) را وارد میکنیم. بعد از زدن دکمه «Enter» تاریخ به شمسی نمایش داده میشود.
یادگیری حرفهای انواع کدنویسی در فرادرس
هر چند در تا این بخش از مطلب، نمونه کدهای مختلفی برای تبدیل تاریخ میلادی به شمسی ارائه شد، با این حال هنگام اجرای کار ممکن است با پیامهای خطا روبرو شویم. بنابراین برای رفع سریع مشکل احتمالی یادگیری نحوه کدنویسی درست بسیار مهم است. البته این موضوع در مورد زبانهای برنامهنویسی دیگری که در ادامه به آنها میپردازیم، نیز ممکن است اتفاق بیفتد. یکی از روشهای ساده جلوگیری از این مشکلات یادگیری حرفهای و کامل کدنویسی در نرمافزارها و زبانهای برنامهنویسی مختلف استفاده از مجموعه فیلمهای آموزش فرادرس است.

در این میان فیلمهای آموزشی منتخب زیر شروع خوبی برای حرکت در این مسیر است.
- فیلم آموزش مقدماتی برنامهنویسی VBA در اکسل در فرادرس
- فیلم آموزش تکمیلی برنامهنویسی VBA در اکسل در فرادرس
- فیلم آموزش کاربردی برنامهنویسی سیشارپ در فرادرس
- فیلم آموزش جاوا اسکریپت در فرادرس
- فیلم آموزش برنامهنویسی پایتون در فرادرس
- فیلم آموزش برنامهنویسی PHP در فرادرس
همچنین علاقهمندان میتوانند سایر مباحث را بر حسب نیاز در مجموعه فیلمهای آموزش زیر نیز یاد بگیرند.
- مجموعه فیلم آموزش برنامهنویسی VBA در فرادرس
- مجموعه فیلم آموزش برنامهنویسی سیشارپ در فرادرس
- مجموعه فیلم آموزش برنامهنویسی پایتون در فرادرس
- مجموعه فیلم آموزش برنامهنویسی PHP در فرادرس
نمونه کد تبدیل تاریخ میلادی به شمسی در زبان برنامه نویسی پایتون
تبدیل این تاریخها در پایتون هم برای گزارشگیری صحیح، تحلیلپذیری و درک بهتر دادهها اهمیت دارد. ماژولها و کتابخانههای مختلفی در زبان برنامهنویسی پایتون برای اینکار وجود دارد که کتابخانه «jdatetime» یکی از استانداردترین آنها است و با کدنویسی ساده میتوانیم تاریخ میلادی را به شمسی تبدیل کنیم.
در صورت علاقهمندی، برای آشنایی با این کتابخانهها پیشنهاد میکنیم مجموعه فیلم آموزش مقدماتی تا پیشرفته کتابخانه پایتون در فرادرس را مشاهده کنید.
اما نمونه کلی کد تبدیل تاریخ میلادی به شمسی در پایتون با کتابخانه «jdatetime» به شرح زیر است.
import jdatetime
import datetime
# نمونه تاریخ میلادی
g_date = datetime.date(2025, 9, 23)
# تبدیل به تاریخ شمسی
j_date = jdatetime.date.fromgregorian(date=g_date)
# نمایش خروجی
print("تاریخ میلادی:", g_date)
print("تاریخ شمسی:", j_date)
مراحل اجرای کد
برای اجرای کدهای تبدیل تاریخ قبل از هر کاری لازم است کتابخانه مربوط را نصب کنیم. سپس با ایجاد فایل جدید پایتون و کپی کردن کد، آن را در ترمینال برنامه اجرا کنیم.
آموزش کامل مراحل اجرای کار و همچنین نمونه کدهای سایر کتابخانههای پایتون را در مطلب زیر از مجله فرادرس توضیح دادهایم.
کد نمونه تبدیل کردن تاریخ میلادی به تقویم شمسی در PHP
یکی از چالشهای برنامهنویسان عدم پشتیبانی زبان تحت وب PHP از تقویم شمسی است. در این زبان برنامهنویسی هم کتابخانههای مختلفی برای تبدیل تاریخ وجود دارد که «jdf.php» بهدلیل دقت بالا و پشتیبانی از سال کبیسه استانداردترین نوع است. کد زیر نمونهای از کدهای تبدیل تاریخ میلادی به شمسی در PHP است.
<?php
// فایل jdf.php را include کنید
include_once("jdf.php");
// نمونه تاریخ میلادی
$gregorianDate = "2025-09-23";
// تبدیل رشته تاریخ به timestamp
$timestamp = strtotime($gregorianDate);
// استفاده از تابع jdate برای تبدیل به تاریخ شمسی
$shamsiDate = jdate("Y/m/d", $timestamp);
echo "تاریخ میلادی: " . $gregorianDate . "<br>";
echo "تاریخ شمسی: " . $shamsiDate;
?>
برای آشنایی با نحوه اجرای این کد پیشنهاد میکنیم فیلم آموزش رایگان تبدیل تاریخ میلادی به شمسی در PHP در فرادرس را مشاهده کنید. همچنین در صورت علاقهمندی اصول کار با این زبان برنامهنویسی از سطح مقدماتی تا پیشرفته را میتوانید در مجموعه فیلم آموزش PHP در فرادرس یاد بگیرید.
کد نمونه تبدیل کردن تاریخ میلادی به شمسی در جاوا اسکریپت
زبان برنامهنویسی جاوا اسکریپت هم از تقویم فارسی پشتیبانی نمیکند. تبدیل تاریخ میلادی به شمسی در این زبان هم به خصوص در وبسایتها و اپلیکیشنهای فارسی که نیاز به تقویم قابل درک برای کاربران ایرانی دارند، بسیار کاربردی است. یکی از پرکاربردترین کتابخانهها برای تبدیل تاریخ در جاوا اسکریپت، «moment-jalaali» است که با پشتیبانی کامل از سال کبیسه، دقت بالایی دارد. کد زیر نمونه تبدیل تاریخ میلادی به شمسی با استفاده از این کتابخانه است.
moment.loadPersian(); console.log(moment("2025-09-23", "YYYY-MM-DD").format("jYYYY/jMM/jDD"));از آنجا که اجرای این کد نیاز به یادگیری کامل این زبان برنامهنویسی دارد، پیشنهاد میکنیم با توجه به نیاز، مبحث دلخواه خود را از مجموعه فیلم آموزش مقدماتی تا پیشرفته جاوا اسکریپت در فرادرس مشاهده کنید.
کد نمونه تبدیل تاریخ میلادی به شمسی در سیشارپ
در زبان برنامهنویسی سیشارپ نیز بهدلیل عدم پشتیبانی آن از تقویم شمسی، طراحان ایرانی وبسایت و اپلیکیشن نیاز به کدنویسی مخصوص دارند. یکی از دقیقترین ابزارها با ویژگی پشتیبانی کامل از سال کبیسه در تبدیل تاریخ میلادی به شمسی در این زبان، کلاس «PersianCalender» است. در ساختار زیر نمونهای از کد تبدیل تاریخ میلادی به شمسی را با توجه به این کلاس آوردهایم.
using System;
using System.Globalization;
class Program {
static void Main() {
DateTime gDate = DateTime.Now;
PersianCalendar pc = new PersianCalendar();
Console.WriteLine("{0}/{1}/{2}",
pc.GetYear(gDate),
pc.GetMonth(gDate),
pc.GetDayOfMonth(gDate));
}
}
برای اجرای صحیح این کد نیز پیشنهاد میکنیم قبل از هر چیز با توجه به سطح آشنایی خود به این زبان برنامهنویسی یکی از موضوعات تدریس شده در مجموعه فیلم آموزش مقدماتی تا پیشرفته سیشارپ در فرادرس را مشاهده کنید.
جمعبندی پایانی
تبدیل تاریخ میلادی به شمسی در نرمافزارها و زبانهای برنامهنویسی برای درک بهتر دادهها و گزارشها در زبان فارسی ضروری است. در این مطلب از مجله فرادرس نمونه کد تبدیل تاریخ میلادی و شمسی در نرم افزارهای اکسل، گوگل شیت و زبانهای برنامهنویسی پایتون، جاوا اسکریپت، سیشارپ و PHP را همراه با مراحل اجرای کد توضیح دادیم. از آنجا که اجرای بدون مشکل کد نیاز به یادگیری اصول اولیه کار با نرمافزارها یا زبانهای برنامهنویسی مختلف دارد، استفاده از مجموعه فیلمهای آموزش فرادرس راهنمای خوبی برای کسب مهارت تکمیلی است.












