+1 امتیاز

با سلام

من تاریخ رو با استفاده از این متد (زیر) از یک مکس تکست باکس میگیرم و از شمسی تبدیلش میکنم به میلادی و در دیتابیس ذخیره میکنم :

        public static string SamsiToMiladi(string dt)
        {
            string[] _Date = dt.Split('/');
            int _Year = Convert.ToInt32(_Date[0]);
            int _Month = Convert.ToInt32(_Date[1]);
            int _Day = Convert.ToInt32(_Date[2]);
            PersianCalendar pc = new PersianCalendar();
            string today = pc.ToDateTime(_Year, _Month, _Day, 0, 0, 0, 0).ToString().Substring(0, 9);
            return today;
        }

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

        public static string MiladiToShamsi(DateTime dt)
        {
            StringBuilder sb = new StringBuilder();
            PersianCalendar pc = new PersianCalendar();
            sb.Append(pc.GetYear(dt).ToString("0000"));
            sb.Append("/");
            sb.Append(pc.GetMonth(dt).ToString("00"));
            sb.Append("/");
            sb.Append(pc.GetDayOfMonth(dt).ToString("00"));
            return sb.ToString();
        }

خب مشکلم اینجاست که وقتی تبدیل میشه به شمسی ماه و روز جاشون عوضیه مثلا تاریخ اگه باشه 1396/01/16 اینو اینطوری نشون میده 1/16/1396 من میخوام دقیقأ جوری که ذخیره میشه نمایش داده بشه این چجوریه؟

 

یه سوال دیگه هم داشتم و اونم اینه که مثلا همین تاریخ 1/16/1396 میخوام به 16 دست پیدا کنم و تو یه متغییر بریزمش این از ساب استرینگ باید استفاده کنم چون بعضی وقتا میشه 10/16/1396 و یا 5/16/1396 و 12/16/1396 با توجه به ماه تعداد اعدادش تغییر میکنه...

ممنون میشم راهنماییم کنید

2 پاسخ

0 امتیاز

سلام دوست عزیز از این قطعه کد اسفاده کن ایشالله ک کارت راه بیوفته

        

           () Dim pc As System.Globalization.PersianCalendar = New System.Globalization.PersianCalendar

            If Integer.Parse(txt_birthdate.Text.Split("/"c)(0)) < 1300 Then
             
( "سال ورودی اشتباه است",ErrorProvider1.SetError(txt_birthdate
            ElseIf Integer.Parse(txt_birthdate.Text.Split("/"c)(1)) < 1 Or Integer.Parse(txt_birthdate.Text.Split("/"c)(1)) > 12 Then
             ( "ماه ورودی اشتباه است",ErrorProvider1.SetError(txt_birthdate
              
            ElseIf Integer.Parse(txt_birthdate.Text.Split("/"c)(1)) <= 6 Then
                If Integer.Parse(txt_birthdate.Text.Split("/"c)(2)) < 1 Or Integer.Parse(txt_birthdate.Text.Split("/"c)(2)) > 31 Then
                 ("روز ورودی اشتباه است", ErrorProvider1.SetError(txt_birthdate
                  
                End If
            ElseIf Integer.Parse(txt_birthdate.Text.Split("/"c)(1)) >= 12 Then
                If Integer.Parse(txt_birthdate.Text.Split("/"c)(2)) < 1 Or Integer.Parse(txt_birthdate.Text.Split("/"c)(2)) > 30 Then
                 ( "روز ورودی اشتباه است",ErrorProvider1.SetError(txt_birthdate
                   
                End If
            Else
                (" ",ErrorProvider1.SetError(txt_birthdate

        
            End If
        Catch

        End Try

    End Sub

سلام و ممنون بابت کمکت سپاس فقط مشکل من این نیست دوست عزیز مشکلم اینه که وقتی تو گرید ویو یه تاریخ رو تبدیل به شمسی میکنم با استفاده از کد بالا و نمایشش میدم ... جای ماه و روز عکض میشه کاربر تاریخ رو وارد نمیکنه من از یه متغیر واردش میکنم
توسط (197 امتیاز) 6 20
0 امتیاز

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

            DateTime dateTime = DateTime.Now;
            DateTime newday = dateTime;
            Console.WriteLine(newday .ToShortDateString().ToString ());
            System.Globalization.PersianCalendar persionCalender = new System.Globalization.PersianCalendar();
            string test= persionCalender.GetYear(newday ).ToString("0000")  +
                  persionCalender.GetMonth(newday).ToString("00")  +
                  persionCalender.GetDayOfMonth( newday).ToString("00").ToString() ;
            int test2 = int.Parse(test);
            Console.WriteLine(test2.ToString ());
            Console.ReadKey();

 

فقط یه توضیحی که باید بدم اینکه این کد تاریخ میلادی رو تبدیل به شمسی و در نهایت به شما نشون میده!

البته شاید با خودتون بگید خب چرا / نزاشتید؟ در پاسخ به این سوال هم باید بگم که من این خروجی رو میخواستم و شما کافیه که به انتهای روز ماه سال / را اضافه کنید!

:)

سوال جدید

2,334 سوال

2,871 پاسخ

3,725 دیدگاه

3,915 کاربر

دسته بندی ها

...