کد تبدیل تاریخ میلادی به شمسی – آموزش جامع در اکسل و سایر برنامه ها

۲۸۵
۱۴۰۴/۰۷/۷
۵ دقیقه
PDF
آموزش متنی جامع
امکان دانلود نسخه PDF

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

آنچه در این مطلب می‌آموزید:
  • می‌آموزید چگونه تاریخ میلادی را با کدنویسی در اکسل به تاریخ شمسی تبدیل کنید.
  • با روش اجرای کد تبدیل تاریخ میلادی به شمسی در گوگل شیت آشنا می‌شوید.
  • یاد می‌گیرید با استفاده از پایتون تاریخ‌های میلادی را به فرمت شمسی تغییر دهید.
  • درک می‌کنید چگونه با کد PHP تاریخ میلادی را به تاریخ شمسی تبدیل کنید.
  • می‌آموزید در جاوا اسکریپت فرمولی برای تبدیل تاریخ میلادی به شمسی پیاده‌سازی کنید.
  • یاد می‌گیرید با استفاده از سی‌شارپ تاریخ‌های میلادی را به فرمت شمسی بازگردانید.
کد تبدیل تاریخ میلادی به شمسی – آموزش جامع در اکسل و سایر برنامه هاکد تبدیل تاریخ میلادی به شمسی – آموزش جامع در اکسل و سایر برنامه ها
997696

کد تبدیل تاریخ میلادی به شمسی در اکسل

یکی از بهترین روش‌ها برای تبدیل کردن تاریخ میلادی به تقویم شمسی در نرم‌افزار اکسل استفاده از برنامه‌نویسی 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 در اکسل در فرادرس را نیز مشاهده کنید.

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

  1. فشردن کلید «Alt+F11»
  2. ورود به بخش «Module»
  3. فراخوان کد در سلول

در ادامه، اجرای هر یک از مراحل را به شکل تصویری توضیح می‌دهیم.

مراحل تبدیل تاریخ میلادی به شمسی با کد
مراحل تبدیل تاریخ میلادی به شمسی با کد

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

بخش VBA ادیتور-کدنویسی تاریخ اکسل

۲. بعد از ورود به زبانه «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» می‌شویم.

وارد کردن کد تبدیل تاریخ-date-change

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

بخش appscript گوگل شیت-date-change

۳. در سلول دلخواه از شیت، فرمول کلی زیر را با توجه به تاریخ میلادی وارد می‌کنیم.

=toJalali(Year,Month,Day)

به‌عنوان مثال تاریخ دلخواه میلادی =toJalali(2025,9,23) را وارد می‌کنیم. بعد از زدن دکمه «Enter» تاریخ به شمسی نمایش داده می‌شود.

یادگیری حرفه‌ای انواع کدنویسی در فرادرس

هر چند در تا این بخش از مطلب، نمونه کدهای مختلفی برای تبدیل تاریخ میلادی به شمسی ارائه شد، با این حال هنگام اجرای کار ممکن است با پیام‌های خطا روبرو شویم. بنابراین برای رفع سریع مشکل احتمالی یادگیری نحوه کدنویسی درست بسیار مهم است. البته این موضوع در مورد زبان‌های برنامه‌نویسی دیگری که در ادامه به آن‌ها می‌پردازیم، نیز ممکن است اتفاق بیفتد. یکی از روش‌های ساده جلوگیری از این مشکلات یادگیری حرفه‌ای و کامل کدنویسی در نرم‌افزارها و زبان‌های برنامه‌نویسی مختلف استفاده از مجموعه فیلم‌های آموزش فرادرس است.

مجموعه فیلم آموزش برنامه‌نویسی VBA فرادرس-date-change
برای مشاهده مجموعه فیلم آموزش برنامه‌نویسی VBA در فرادرس روی تصویر کلیک کنید

در این میان فیلم‌های آموزشی منتخب زیر شروع خوبی برای حرکت در این مسیر است.

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

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

تبدیل این تاریخ‌ها در پایتون هم برای گزارش‌گیری صحیح، تحلیل‌پذیری و درک بهتر داده‌ها اهمیت دارد. ماژول‌ها و کتابخانه‌های مختلفی در زبان برنامه‌نویسی پایتون برای این‌کار وجود دارد که کتابخانه «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 را همراه با مراحل اجرای کد توضیح دادیم. از آنجا که اجرای بدون مشکل کد نیاز به یادگیری اصول اولیه کار با نرم‌افزارها یا زبان‌های برنامه‌نویسی مختلف دارد، استفاده از مجموعه فیلم‌های آموزش‌ فرادرس راهنمای خوبی برای کسب مهارت تکمیلی است.

بر اساس رای ۴ نفر
آیا این مطلب برای شما مفید بود؟
اگر پرسشی درباره این مطلب دارید، آن را با ما مطرح کنید.
منابع:
مجله فرادرس
PDF
مطالب مرتبط
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *