نمایش نتایج 1 تا 13 از 13

نام تاپیک: كم كردن 2 تاريخ شمسي موجود در Textbox از يكديگر

  1. #1

    كم كردن 2 تاريخ شمسي موجود در Textbox از يكديگر

    سلام من اين سوال رو چندبار بطور ديگه پرسيدم ولي جواب درست و حسابي نگرفتم من ميخوام از دوتا Textbox كه تو هركدومش 2تا تاريخ شمسي وجود داره تاريخ هارو از هم ديگه كم بكنم و در اخر تبديل به روز بشه. مثل مثال زير
    textbox1=1391/2/20
    textbox2=1391/3/25

    كه اگر اين هارو از هم كم بكنيم ميشه 25 روز
    يكي گفت از Datediff استفاده كن ولي جواب نداد لطفا كمك كنيد يه كدي بديد بهم

  2. #2
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: كم كردن 2 تاريخ شمسي موجود در Textbox از يكديگر

    سلام
    دوست عزیز من دو تا تابع بهتون می دم که نه فقط این کار بلکه خیلی کار ها می تونید انجام بدید:
    من همون مثال خودتون رو نوشتم
    البته باید یادتون باشه که تاریخ رو باید کامل وارد کنید یعنی 10 رقمی مثل 20/02/1391

        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Dim Date1 = CDate(GregorianDate(TextBox1.Text)) '1391/02/20
    Dim Date2 = CDate(GregorianDate(TextBox2.Text)) '1391/03/25
    Dim DayDif = Date1.Subtract(Date2).Days
    MsgBox(DayDif)
    End Sub
    ''' <summary>
    ''' برگردان تاریخ میلادی به شمسی
    ''' </summary>
    ''' <param name="InDate">تاریخ میلادی</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Private Function PersianDate(Optional InDate As Date = Nothing) As String
    Try
    If InDate.Year <= 1 Then InDate = Now
    Dim PClndr As New Globalization.PersianCalendar
    Dim DateInIran As String = PClndr.GetYear(InDate)
    DateInIran &= "/" & Strings.Right(("0" & PClndr.GetMonth(InDate)), 2)
    DateInIran &= "/" & Strings.Right(("0" & PClndr.GetDayOfMonth(InDate)), 2)
    Return DateInIran
    Catch ex As Exception
    Return ""
    End Try
    End Function

    ''' <summary>
    ''' برگردان تاریخ شمسی به میلادی
    ''' </summary>
    ''' <param name="InDate">تاریخ شمسی</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Private Function GregorianDate(InDate As String) As String
    If InDate.Length <> 10 Then Return ""
    Dim Year As Integer = Mid(InDate, 1, 4)
    If Year < 1300 OrElse Mid(InDate, 1, 4) > 1500 Then Return ""
    Dim Month As Integer = Mid(InDate, 6, 2)
    If Not IsNumeric(Month) OrElse Month > 12 OrElse Month < 1 Then Return ""
    Dim Day As Integer = Mid(InDate, 9, 2)
    If Day < 1 OrElse Day > 31 Then Return ""
    Try
    Dim PClndr As New Globalization.PersianCalendar
    Return PClndr.ToDateTime(Year, Month, Day, 0, 0, 0, 0).ToString
    Catch ex As Exception
    Return ""
    End Try
    End Function


    در ضمن من همین توابع رو با چند تا تابع مفید تو این تاپیک گذاشتم:
    https://barnamenevis.org/showthread.p...=1#post1472084

  3. #3

    نقل قول: كم كردن 2 تاريخ شمسي موجود در Textbox از يكديگر

    خيلي ممنون تاريخ من بصورت 1391/2/5 هست چيكار كنم؟منظورم اينه بصورت 10 رقمي نيستش!

  4. #4

    نقل قول: كم كردن 2 تاريخ شمسي موجود در Textbox از يكديگر

    خيلي ممنون تاريخ من بصورت 1391/2/5 هست چيكار كنم؟منظورم اينه بصورت 10 رقمي نيستش!
    میتونی فرمت بندیش کنی . شما مگه از طریق persian calender تاریخ شمسی رو بدست نمیاری خوب میتونی ماه و روز رو فرمت بندی کنین به وسیله ی tostring("00") . فکر کنم جواب شما رو دادم :

    #7
    با TimeSpan نیازی به فرمت بندی هم نیست

  5. #5
    کاربر دائمی آواتار M.KH-SH
    تاریخ عضویت
    مرداد 1390
    محل زندگی
    تهران
    پست
    847

    نقل قول: كم كردن 2 تاريخ شمسي موجود در Textbox از يكديگر

    دوست عزیز::::

    Dim d1, d2 As Date
    d1 = "1390/01/02"
    d2 = "1390/01/29"
    Label1.Text = DateDiff(DateInterval.Day, d1, d2)



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

  6. #6

    نقل قول: كم كردن 2 تاريخ شمسي موجود در Textbox از يكديگر

    تشكر كار راه افتاد

  7. #7
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: كم كردن 2 تاريخ شمسي موجود در Textbox از يكديگر

    نقل قول نوشته شده توسط M.KH-SH مشاهده تاپیک
    دوست عزیز::::

    Dim d1, d2 As Date
    d1 = "1390/01/02"
    d2 = "1390/01/29"
    Label1.Text = DateDiff(DateInterval.Day, d1, d2)



    شما به هر صورتی که دلت میخواد وارد کن
    سلام
    دوست عزیز قصد جسارت ندارم ولی ما بیکار نبودیم که رفتیم اون همه کد رو نوشتیم!!!
    این کد رو تست کن متوجه می شی:

    Dim d1, d2 As Date
    d1 = "1390/02/02"
    d2 = "1390/02/29"
    Label1.Text = DateDiff(DateInterval.Day, d1, d2)


    توضیح:
    تو کد شما اون تاریخ به شمسی تبدیل نمشه بلکه یک تاریخ میلادی در نظر گرفته می شه
    و تعداد روز های ماه های میلادی با ماه های شمسی هم خونی ندره
    تو این مثال بنده هم ماه دوم میلادی 28 روز هست واسه همین خطا می ده (آیا ما ماهی با 28 روز داریم؟؟!! حتی ماه دوم ما 31 روز هست یعنی سه روز تفاوت!!!)

  8. #8
    کاربر دائمی آواتار M.KH-SH
    تاریخ عضویت
    مرداد 1390
    محل زندگی
    تهران
    پست
    847

    نقل قول: كم كردن 2 تاريخ شمسي موجود در Textbox از يكديگر

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

    بله شما هم استاد هستی و هم برنامه نویس آقا تنها کدهای شما درست.

  9. #9
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: كم كردن 2 تاريخ شمسي موجود در Textbox از يكديگر

    نقل قول نوشته شده توسط M.KH-SH مشاهده تاپیک
    بیکار یا باکار بودن شما به من ربطی نداره
    با یک تبدیل تاریخ به راحتی مشکل برطرف میشه

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

    باید به این نکته توجه کنید که ما اینجا قصد راهنمایی داریم نه اینکه بیام یه روش کاملا اشتباه رو بدیم و ملت رو دور خودش بپیچونیم
    میگید نه؟؟!! پس به این تاپیک سر بزنید:
    اين خطا رو چطوري رفع كنم؟Is not Declared
    می بینید همین دوستمون دارن درست از روش شما استفاده می کنن و بعد ها دچار مشکل می شن و خودتون هم می دونید
    اگر هم بگیم نیت کمک کردن مهمه این نکته رو هم باید در نظر داشت که موقع دادن پاسخ حداقل کاری که می تونید بکنید یک بار تست کردن کدتون هست

    در ضمن اگه ممکنه این رو هم توضیح بدید که منظورتون رو اصلا متوجه نشدم
    با یک تبدیل تاریخ به راحتی مشکل برطرف میشه
    و اما قسمت شخصی مسئله:

    جناب M.KH-SH اولا من شما رو دوست عزیزم خطاب کردم .دوما گفتم که قصد جسارت ندارم(اعم از تمسخر ، توهین و غیره)
    من کلمه بیکار رو نوشتم فقط جهت تاکید چون شما به قدری مطمئن پست زده بودید ("دلت میخواد" ) که منم شک ورداشت
    فکر کنم باید در مورد حرف زدنتون هم تجدید نظر کنید و زود از کوره در نرید و طاقت انتقاد رو هم داشته باشید

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

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

  10. #10
    کاربر دائمی آواتار bastakboys
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    بچه جنوبم
    پست
    244

    نقل قول: كم كردن 2 تاريخ شمسي موجود در Textbox از يكديگر

    دوست عزیز دو تاریختو تبدیل کن به میلادی بعد با تابع
    DateDiff(DateInterval.Day, d1, d2)

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

  11. #11

    نقل قول: كم كردن 2 تاريخ شمسي موجود در Textbox از يكديگر

    اقا ممنون كارم راه افتاد با كدهاي شما عزيزان

  12. #12
    کاربر دائمی آواتار teymoorei
    تاریخ عضویت
    تیر 1388
    محل زندگی
    خراسان رضوی - کاشمر
    پست
    719

    نقل قول: كم كردن 2 تاريخ شمسي موجود در Textbox از يكديگر

    سلام
    دوستان لطفا کمک کنید .
    من از این کد برای بدست آوردن تاریخ استفاده می کنم :
            Dim TARIKH As New System.Globalization.PersianCalendar
    Dim strTarikh As String = "{0}/{1}/{2}"
    strTarikh = String.Format(strTarikh, TARIKH.GetYear(DateTime.Now), TARIKH.GetMonth(DateTime.Now), TARIKH.GetDayOfMonth(DateTime.Now))
    lblDate.Text = strTarikh

    چیزی که نمایش میده با این قالبه :
    1390/1/1
    در حالی که من می خوام این حالتی نمایش بده :
    1390/01/01
    لطفا کمک کنید خلیلی عجله دارم

  13. #13

    نقل قول: كم كردن 2 تاريخ شمسي موجود در Textbox از يكديگر

    در حالی که من می خوام این حالتی نمایش بده :
    1390/01/01
    سلام ، داخل تاپیکی که قبلا خودتون ایجاد کرده بودین جواب خودتون رو دادین !!

    Private Function MiladiToShamsi(ByVal MiladDate As Date) As String
    Dim sb As New System.Text.StringBuilder
    Dim pc As New System.Globalization.PersianCalendar
    sb.Append(pc.GetYear(DateAndTime.Now).ToString("00 00") + "/")
    sb.Append(pc.GetMonth(DateAndTime.Now).ToString("0 0") + "/")
    sb.Append(pc.GetDayOfMonth(DateAndTime.Now).ToStri ng("00"))
    Return sb.ToString()
    End Function
    آخرین ویرایش به وسیله Hybrid : یک شنبه 23 مهر 1391 در 14:41 عصر

تاپیک های مشابه

  1. textbox براي وارد كردن تاريخ شمسي
    نوشته شده توسط samira2008 در بخش C#‎‎
    پاسخ: 10
    آخرین پست: سه شنبه 01 آذر 1390, 13:43 عصر
  2. سوال: كامپوننت وارد كردن تاريخ شمسي در asp
    نوشته شده توسط myaffa در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: سه شنبه 12 مهر 1390, 08:06 صبح
  3. سوال: ذخيره كردن تاريخ شمسي در SQL SERVER2005
    نوشته شده توسط n@seri در بخش SQL Server
    پاسخ: 5
    آخرین پست: دوشنبه 24 آبان 1389, 11:46 صبح
  4. حرفه ای: اضافه كردن تاريخ شمسي به ويندوز با Shamsi_XP
    نوشته شده توسط BOB در بخش پروژه‌های Open Source
    پاسخ: 7
    آخرین پست: سه شنبه 23 شهریور 1389, 18:59 عصر
  5. ذخيره كردن تاريخ شمسي به صورت datetime
    نوشته شده توسط mojtabadj در بخش VB.NET
    پاسخ: 10
    آخرین پست: پنج شنبه 16 مهر 1388, 10:32 صبح

قوانین ایجاد تاپیک در تالار

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