دسته بندی ها
05:17 1400/02/13

تبدیل تاریخ میلادی به شمسی در دیتا گریدویو در #C

مشخصات سوال کننده :
کاربر : adelo77     امتیاز کاربر : 0     رتبه کاربر : 7135
دسته بندی : سی شارپ

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

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

کد شما به طور کلی صحیح است، اما در تبدیل تاریخ شمسی به تاریخ میلادی مشکل وجود دارد. به جای اینکه تاریخ شمسی را به عنوان DateTime در دیتابیس ذخیره کنید، بهتر است تاریخ شمسی را به یک رشته (string) تبدیل کنید و سپس آن را در DataGridView نمایش دهید. در زیر کد اصلاح شده را مشاهده می کنید:

 System.Globalization.PersianCalendar pcl = new System.Globalization.PersianCalendar();
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                DateTime gregorianDate = ds.Tables[0].Rows[i].Field<DateTime>("birthday");
                int shamsi_year = pcl.GetYear(gregorianDate);
                int shamsi_month = pcl.GetMonth(gregorianDate);
                int shamsi_day = pcl.GetDayOfMonth(gregorianDate);
                string shamsi_date = $"{shamsi_year}/{shamsi_month}/{shamsi_day}";
                ds.Tables[0].Rows[i].SetField<string>("birthday", shamsi_date);
            }

این کد تاریخ میلادی را به فرمت شمسی تبدیل می کند و آن را به صورت یک رشته (string) در ستون birthday ذخیره می کند. مطمین شوید که نوع داده ی ستون birthday در DataTable شما از string است، تا بتوانید تاریخ شمسی را به درستی ذخیره کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 00:22 1400/02/15

نمایش تاریخ به صورت شمسی در دیتاگرید ویو در سی شارپ

روشی که شما استفاده کردید به نظر مناسب نیست. شما بهتره یک تابع بنویسید که عملیات تبدیل تاریخ میلادی به شمسی رو انجام بده و در حلقه for فقط از این تابع استفاده کنید. برای این منظور ابتدا یک کلاس ایجاد کنید که عملیات تبدیل تاریخ میلادی به شمسی رو انجام بده.

 

using MD.PersianDateTime;
using System;
   
public static class ConvertDateTime
{
   

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

 

خب حالا فقط کافیه به صورت زیر عمل کنید :

 

for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
   shamsi_date = ConvertDateTime.ConvertMiladiToShamsi(YourDate, "yyyy/MM/dd");
}

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

لینک زیر رو هم مطالعه کنید.

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

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