دسته بندی ها
01:23 1399/06/19

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

مشخصات سوال کننده :
کاربر : pedram_khan     امتیاز کاربر : 277     رتبه کاربر : 6
دسته بندی : Asp.net Mvc Asp.net Core Asp.net Web Form سی شارپ

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 18725
هوش مصنوعی

پاسخ هوش مصنوعی

برای نگهداری تاریخ ها در سی شارپ، بهتر است از نوع داده ی DateTime استفاده کنید. این نوع داده به شما امکان می دهد تا تاریخ ها را به راحتی مدیریت و تبدیل کنید.

برای تبدیل تاریخ میلادی به شمسی و بالعکس، می توانید از کتابخانه های موجود استفاده کنید. یکی از معروف ترین کتابخانه ها برای این کار PersianCalendar است. در زیر مثال هایی از چگونگی تبدیل تاریخ ها آورده شده است.

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


using System;
using System.Globalization;

class Program
{
    static void Main()
    {
        DateTime gregorianDate = new DateTime(2023, 10, 5);
        PersianCalendar persianCalendar = new PersianCalendar();

        int persianYear = persianCalendar.GetYear(gregorianDate);
        int persianMonth = persianCalendar.GetMonth(gregorianDate);
        int persianDay = persianCalendar.GetDayOfMonth(gregorianDate);

        Console.WriteLine($"تاریخ میلادی: {gregorianDate.ToShortDateString()}");
        Console.WriteLine($"تاریخ شمسی: {persianYear}/{persianMonth}/{persianDay}");
    }
}

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


using System;
using System.Globalization;

class Program
{
    static void Main()
    {
        int persianYear = 1402;
        int persianMonth = 7;
        int persianDay = 13;
        PersianCalendar persianCalendar = new PersianCalendar();

        DateTime gregorianDate = persianCalendar.ToDateTime(persianYear, persianMonth, persianDay, 0, 0, 0, 0);

        Console.WriteLine($"تاریخ شمسی: {persianYear}/{persianMonth}/{persianDay}");
        Console.WriteLine($"تاریخ میلادی: {gregorianDate.ToShortDateString()}");
    }
}

این کدها به شما کمک می کنند تا تاریخ ها را بین میلادی و شمسی تبدیل کنید. همچنین می توانید از این الگوها در یک وب سایت نیز استفاده کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 14:31 1399/06/21

شما برای تاریخ و نگهداری تاریخ در دیتابیس همیشه از DateTime استفاده کنید. چون اگر از نوع Varchar استفاده کنید و تاریخ رو به صورت رشته نگهداری کنید بعدا ممکنه دچار مشکل بشید.

 

برخی از مشکلات نگهداری تاریخ به صورت Varchar :

  • مشکل هنگام جستجو در بین تاریخ در نرم افزار
  • ایجاد مشکل وقتی قصد دارید مثلا 10 روز به تاریخ اضافه کنید یا کم کنید.
  • مشکل داشتن جهت مقایسه بین تاریخ
  • و ...

ولی وقتی تاریخ رو به صورت DateTime ذخیره کنید به راحتی می تونید جستجو، مقایسه، کم و زیاد کردن به تاریخ، تبدیل تاریخ به ساعت، دقیقه، ثانیه، روز، ماه، سال و ... رو انجام بدید.

 

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

خب حالا برای اینکه بتونید از این تاریخ DateTime توی پروژه خودتون استفاده کنید و در پروژه نمایش بدید میتونید یک کلاس ایجاد کنید و اسمش رو مثلا بذارید ConvertDateTime و دستورات زیر رو داخلش بنویسید :

 

using MD.PersianDateTime.Core;
using System;
   
public static class ConvertDateTime
{
    public static DateTime ConvertShamsiToMiladi(string date)
    {
        PersianDateTime persianDateTime = PersianDateTime.Parse(date);
        return persianDateTime.ToDateTime();
    }

    public static string ConvertMiladiToShamsi(this DateTime? date, string format)
    {
        PersianDateTime persianDateTime = new PersianDateTime(date);
        return persianDateTime.ToString(format);
    }
}

 

خب در کلاس ConvertDateTime ما دو تابع رو تعریف کردیم که در ادامه میگیم نحوه استفاده از هر کدوم به چه صورتی هست.

نکته : دقت کنید که در دستورات بالا از کتابخانه MD.PersianDateTime.Core هم استفاده شده که شما باید از طریق nuget این کتابخانه ر به پروژه خودتون اضافه کنید تا دستورات استفاده شده رو بشناسه.

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

برای تبدیل تاریخ های میلادی به شمسی در سی شارپ و نمایش اون در پروژه میتونید از تابع ConvertMiladiToShamsi استفاده کنید. نحوه استفاده از این تابع هم در مثال زیر نمایش داده شده :

 

ConvertDateTime.ConvertMiladiToShamsi('2020-05-15','yyyy/MM/dd');

 

در مثال بالا خواهید دید که تاریخ به صورت شمسی و با فرمتی که تعیین شده نمایش داده میشه.

 

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

برای تبدیل تاریخ شمسی به میلادی در سی شارپ هم میتونید از تابع ConvertShamsiToMiladi استفاده کنید. در مثال زیر نحوه انجام این کار رو میتونید ببینید :

 

ConvertDateTime.ConvertShamsiToMiladi('1399/05/15');

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

به این پاسخ امتیاز بدهید    1
امتیاز: 1664 رتبه: 1
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود