دسته بندی ها
16:13 1398/10/27

کار با تاریخ شمسی وساعت (استفاده از توابع )

مشخصات سوال کننده :
کاربر : Nori     امتیاز کاربر : 72     رتبه کاربر : 15
دسته بندی : WPF Sql Server سی شارپ

به این سوال امتیاز بدهید    3
تعداد بازدید این سوال : 7919
پاسخ دهنده : fateme 17:21 1398/10/28

روشی که شما استفاده کردید هم روش بدی نیست. ولی مشکلی که داره  این هست که بسیاری از امکانات DateTime مثل توابع DateTime.Add یا DateTime.Diff رو نداره.

میتونید یک ستون دیگه هم از نوع datetime اضافه کنید و برای نمایش تاریخ از ستون string استفاده کنید و اگر احیانا در قسمتی از پروژه نیاز داشتید که دو تابع رو مقایسه کنید از فیلد datetime استفاده کنید.

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

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

 

        public static string DateShamsi()
        {
            var currentDate = DateTime.Now;
            PersianCalendar pcCalender = new PersianCalendar();
            int year = pcCalender.GetYear(currentDate);
            int month = pcCalender.GetMonth(currentDate);
            int day = pcCalender.GetDayOfMonth(currentDate);


            string shamsiDate = string.Format("{0:yyyy/MM/dd}", Convert.ToDateTime(year + "/" + month + "/" + day));
            return shamsiDate;
        }

 

ویرایش شده در دوشنبه 17 مرداد 1401 ساعت 22:20:32
به این پاسخ امتیاز بدهید    ‎−1
امتیاز: 1617 رتبه: 2
پاسخ دهنده : Reza0098 22:44 1398/11/19

بهترین روش ذخیره همون DateTime2 هست که مقایسه رو به شدت آسون میکنه و کار باهاش خیلی راحت میشه

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

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

من خودم قبلا از string استفاده میکردم و اصلا خوب نبود ولی با این روش کلی کارم راحت تر شده

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

[Column(TypeName = "datetime2")]
public Nullable<DateTime> dateTime { get; set; }

 

ویرایش شده در دوشنبه 17 مرداد 1401 ساعت 22:19:17
به این پاسخ امتیاز بدهید    ‎−1
امتیاز: 13 رتبه: 55
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود