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

نام تاپیک: مشكل و خطا در محاسبه بين دو تاريخ (هجري شمسي)

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    دی 1389
    محل زندگی
    يه جاي ايران
    پست
    72

    Question مشكل و خطا در محاسبه بين دو تاريخ (هجري شمسي)

    با سلام.
    دوستان خسته نباشيد.
    راستش در مورد محاسبه بين دو تاريخ مشكلاتي دارم كه ممنون ميشم كمكم كنيد...
    خيلي ضروريه.
    تو بعضي تاريخ ها كار ميكنه ولي تو بعضي ديگه نه!
    مثلا وقتي ميزني 1370/02/31 خطا ميده!
    من فايل ضميمه رو اينجا ميزارم تا يه نگاهي بهش بكنين.
    من تو اين برنامه سن تقريبي فرد رو محاسبه ميكنم كه از سال جاري كسر ميشه و ميگه فرد چند سالشه!
    ممنون ميشم راهنمائي كنين.
    فایل های ضمیمه فایل های ضمیمه

  2. #2
    کاربر تازه وارد
    تاریخ عضویت
    دی 1389
    محل زندگی
    يه جاي ايران
    پست
    72

    نقل قول: مشكل و خطا در محاسبه بين دو تاريخ (هجري شمسي)

    دوستان كسي نيست جواب سوال منو بده؟؟
    خواهشا فايل ضميمه رو دانلود كنيد و بهم كمك كنيد.
    ممنون ميشم....

  3. #3
    کاربر دائمی آواتار barbodsoft.com
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    آمل
    سن
    44
    پست
    469

    نقل قول: مشكل و خطا در محاسبه بين دو تاريخ (هجري شمسي)

    کد های فرمت رو با کد زیر جایگزین کن.

    Imports System.Globalization

    Public Class Form1
    Public shamsi As New Globalization.PersianCalendar
    Private Sub MaskedTextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MaskedT6.TextChanged

    If MaskedT6.MaskCompleted = True Then
    Dim DateBrith As Date = ShamsiToMiladi(MaskedT6.Text)
    Dim Y As Integer = DateDiff(DateInterval.Year, DateBrith, Now)
    DateBrith = DateBrith.AddYears(Y)
    Dim M As Integer = DateDiff(DateInterval.Month, DateBrith, Now)
    DateBrith = DateBrith.AddMonths(M)
    Dim D As Integer = DateDiff(DateInterval.Day, DateBrith, Now)
    MsgBox("your age is :" & Y & "/" & M & "/" & D)
    sen.Text = Y & "/" & M & "/" & D
    End If
    End Sub

    Public Function ShamsiToMiladi(ByVal SDate As String) As String

    Dim pc As New Globalization.PersianCalendar
    ShamsiToMiladi = ""
    Dim Tarikh
    Tarikh = Split(SDate, "/")
    ShamsiToMiladi = (pc.ToDateTime(Tarikh(0), Tarikh(1), Tarikh(2), 0, 0, 0, 0))
    Return ShamsiToMiladi
    End Function
    End Class


  4. #4
    کاربر تازه وارد
    تاریخ عضویت
    دی 1389
    محل زندگی
    يه جاي ايران
    پست
    72

    نقل قول: مشكل و خطا در محاسبه بين دو تاريخ (هجري شمسي)

    مرسي باربدسافت عزيز...
    قربونه دستت...
    فقط داداشي اگه زحمتي نيست بعضي جاهاي كدتو برام توضيح بده.
    ميخوام بدونم چيكار ميكنه و به خاطر همين وقتي تاريخ ماه و روز به ترتيب 12 و 31 به بالا وارد شدن خطا نده و جلوشو بگيرم.و همينطور وقتي مقدارشون صفر وارد ميشه هم نذارم.
    ممنونت ميشم.
    مرسيييييييييييييييييييييي ي

  5. #5
    کاربر دائمی آواتار barbodsoft.com
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    آمل
    سن
    44
    پست
    469

    نقل قول: مشكل و خطا در محاسبه بين دو تاريخ (هجري شمسي)

    جلوی هر خطی که لازم به توضیح بود. توضیح دادم. چون شما از goto استفاده کرده بودی من هم از این روش استفاده کردم.

    Imports System.Globalization

    Public Class Form1
    Public shamsi As New Globalization.PersianCalendar
    Private Sub MaskedTextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MaskedT6.TextChanged
    Try
    If MaskedT6.MaskCompleted = True Then
    If Val(MaskedT6.Text.Substring(5, 2)) > 12 Then GoTo M ' چک می کند تاریخ ماه بیشتر از 12 نباشد
    If Val(MaskedT6.Text.Substring(8, 2)) > 31 Then GoTo D ' چک می کند تاریخ روز بیشتر 31 نباشد
    Dim DateBrith As Date = ShamsiToMiladi(MaskedT6.Text) 'معادل میلادی تاریخ وارد شده حساب می شود ShamsiToMiladi از طریق تابع
    Dim Y As Integer = DateDiff(DateInterval.Year, DateBrith, Now) ' اختلاف تاریخ به سال محاسبه می شود
    DateBrith = DateBrith.AddYears(Y) 'اختلاف سال به DateBrith اضافه می شود
    Dim M As Integer = DateDiff(DateInterval.Month, DateBrith, Now) ' اختلاف ماه محاسبه می شود
    DateBrith = DateBrith.AddMonths(M) ' اختلاف ماه به DateBrith اضافه می شود
    Dim D As Integer = DateDiff(DateInterval.Day, DateBrith, Now) ' اختلاف روز محاسبه می شود
    MsgBox("your age is :" & Y & "/" & M & "/" & D)
    sen.Text = Y & "/" & M & "/" & D
    GoTo close
    Else
    GoTo close
    End If
    Catch ex As Exception
    GoTo tryGo ' در صورتی که فرمت تاریخ صحیح نباشه مثلا تاریخ 1358/12/31 وارد شود. اسفند 31 روزه نداریم
    End Try


    M:
    MsgBox("error Month")
    GoTo close

    D:
    MsgBox("error Day")
    GoTo close

    tryGo:
    MsgBox("error Format")
    GoTo close

    close:
    End Sub

    Public Function ShamsiToMiladi(ByVal SDate As String) As String
    'تابع تبدیل تاریخ شمسی به میلادی
    Dim pc As New Globalization.PersianCalendar
    ShamsiToMiladi = ""
    Dim Tarikh
    Tarikh = Split(SDate, "/")
    ShamsiToMiladi = (pc.ToDateTime(Tarikh(0), Tarikh(1), Tarikh(2), 0, 0, 0, 0))
    Return ShamsiToMiladi
    End Function
    End Class


  6. #6
    کاربر تازه وارد
    تاریخ عضویت
    دی 1389
    محل زندگی
    يه جاي ايران
    پست
    72

    نقل قول: مشكل و خطا در محاسبه بين دو تاريخ (هجري شمسي)

    ممنونم داداش خوبم.شرمنده به زحمت انداختمت.
    دستت درد نكنه....

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

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