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

نام تاپیک: آموزش - مقدماتی - تبدیل تاریخ میلادی به شمسی و بلعکس و اعتبار سنجی آن

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1

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

    با گذشت چندین سال از ارائه دات نت فریم ورک 2 هنوز خیلی ها از وجود تاریخ شمسی در vs.net اطلاعی ندارند و یا طرز استفاده از اونو نمی دونند برای استفاده از تاریخ شمسی راههای زیادی وجود داره ، من روشی رو که خودم استفاده می کنم اینه:
    میلادی به شمسی:

    Function MiladiToShamsi(ByVal Year AsInteger, ByVal Month AsInteger, ByVal Day AsInteger) AsString
    Try
    Dim Date_M AsDate = Year & "/" & Month & "/" & Day
    Dim Date_Sh AsNew Globalization.PersianCalendar
    Return Date_Sh.GetYear(Date_M) & "/" & Format(Date_Sh.GetMonth(Date_M), "00") & "/" & Format(Date_Sh.GetDayOfMonth(Date_M), "00")
    Catch ex As Exception
    Return 0
    EndTry
    EndFunction

    مثال:

    MaskedTextBoxDateShamsi.Text = MiladiToShamsi(Date.Now.Year, Date.Now.Month, Date.Now.Day)

    شمسی به میلادی:

    Function ShamsiToMiladi(ByVal ShamsiDate AsString) AsString
    If IsNumeric(ShamsiDate.Replace("/", "")) = FalseThenReturn 0
    Try
    If ShamsiDate.Length <> 10 ThenReturn 0
    Dim Date_Sh AsNew Globalization.PersianCalendar()
    Dim Date_M As DateTime = Date_Sh.ToDateTime(ShamsiDate.Substring(0, 4), ShamsiDate.Substring(5, 2), _
    ShamsiDate.Substring(8, 2), _
    0, 0, 0, 0, _
    Globalization.PersianCalendar.PersianEra)
    Return Date_M.ToShortDateString
    Catch ex As Exception
    Return 0
    EndTry
    EndFunction

    مثال :

    ShamsiToMiladi("1387/03/01")



    برای اعتبار سنجی تاریخ وارد شده شمسی کافیه اونو به تابع ShamsiToMiladi بدید و اگه مقدار برگشتیتون 0 بود تاریخ صحیح نیست. (مثل وارد کردن 31 اسفند و یا هر تاریخ غلط دیگه ای )
    شما می تونید این کارو به دو صورت انجام بدین وقتی می خواین اطلاعات رو ثبت کنید و یا وقتی که فوکوس از تکس باکس تاریخ خارج شد و تا وقتی که تاریخ صحیح وارد نشد اجازه خروج از تکس باکس تاریخ رو به کاربر ندین .
    روی فرم یک MaskedTextBox قرار بدین و خاصیت ماسک Mask اونو 0000/00/00 ست کنید

    PrivateSub MaskedTextBoxDateShamsi_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MaskedTextBoxDateShamsi.Leave
    If ShamsiToMiladi(MaskedTextBoxDateShamsi.Text) = "0"Then
    MsgBox("تاریخ صحیح نمی باشد")
    MaskedTextBoxDateShamsi.Focus()
    MaskedTextBoxDateShamsi.SelectAll()
    EndIf
    EndSub

    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله BlueTree_team : یک شنبه 29 اردیبهشت 1387 در 21:27 عصر

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

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