كم كردن 2 تاريخ شمسي موجود در Textbox از يكديگر
سلام من اين سوال رو چندبار بطور ديگه پرسيدم ولي جواب درست و حسابي نگرفتم من ميخوام از دوتا Textbox كه تو هركدومش 2تا تاريخ شمسي وجود داره تاريخ هارو از هم ديگه كم بكنم و در اخر تبديل به روز بشه. مثل مثال زير
textbox1=1391/2/20
textbox2=1391/3/25
كه اگر اين هارو از هم كم بكنيم ميشه 25 روز
يكي گفت از Datediff استفاده كن ولي جواب نداد لطفا كمك كنيد يه كدي بديد بهم
نقل قول: كم كردن 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
نقل قول: كم كردن 2 تاريخ شمسي موجود در Textbox از يكديگر
خيلي ممنون تاريخ من بصورت 1391/2/5 هست چيكار كنم؟منظورم اينه بصورت 10 رقمي نيستش!
نقل قول: كم كردن 2 تاريخ شمسي موجود در Textbox از يكديگر
نقل قول:
خيلي ممنون تاريخ من بصورت 1391/2/5 هست چيكار كنم؟منظورم اينه بصورت 10 رقمي نيستش!
میتونی فرمت بندیش کنی . شما مگه از طریق persian calender تاریخ شمسی رو بدست نمیاری خوب میتونی ماه و روز رو فرمت بندی کنین به وسیله ی tostring("00") . فکر کنم جواب شما رو دادم :
#7
با TimeSpan نیازی به فرمت بندی هم نیست
نقل قول: كم كردن 2 تاريخ شمسي موجود در Textbox از يكديگر
دوست عزیز::::
Dim d1, d2 As Date
d1 = "1390/01/02"
d2 = "1390/01/29"
Label1.Text = DateDiff(DateInterval.Day, d1, d2)
شما به هر صورتی که دلت میخواد وارد کن
نقل قول: كم كردن 2 تاريخ شمسي موجود در Textbox از يكديگر
نقل قول: كم كردن 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 روز هست یعنی سه روز تفاوت!!!)
نقل قول: كم كردن 2 تاريخ شمسي موجود در Textbox از يكديگر
نقل قول:
دوست عزیز قصد جسارت ندارم ولی ما بیکار نبودیم که رفتیم اون همه کد رو نوشتیم!!!
بیکار یا باکار بودن شما به من ربطی نداره
با یک تبدیل تاریخ به راحتی مشکل برطرف میشه
بله شما هم استاد هستی و هم برنامه نویس آقا تنها کدهای شما درست.
نقل قول: كم كردن 2 تاريخ شمسي موجود در Textbox از يكديگر
نقل قول:
نوشته شده توسط
M.KH-SH
بیکار یا باکار بودن شما به من ربطی نداره
با یک تبدیل تاریخ به راحتی مشکل برطرف میشه
بله شما هم استاد هستی و هم برنامه نویس آقا تنها کدهای شما درست.
سلام مجدد
باید به این نکته توجه کنید که ما اینجا قصد راهنمایی داریم نه اینکه بیام یه روش کاملا اشتباه رو بدیم و ملت رو دور خودش بپیچونیم
میگید نه؟؟!! پس به این تاپیک سر بزنید:
اين خطا رو چطوري رفع كنم؟Is not Declared
می بینید همین دوستمون دارن درست از روش شما استفاده می کنن و بعد ها دچار مشکل می شن و خودتون هم می دونید
اگر هم بگیم نیت کمک کردن مهمه این نکته رو هم باید در نظر داشت که موقع دادن پاسخ حداقل کاری که می تونید بکنید یک بار تست کردن کدتون هست
در ضمن اگه ممکنه این رو هم توضیح بدید که منظورتون رو اصلا متوجه نشدم
نقل قول:
با یک تبدیل تاریخ به راحتی مشکل برطرف میشه
و اما قسمت شخصی مسئله:
جناب M.KH-SH اولا من شما رو دوست عزیزم خطاب کردم .دوما گفتم که قصد جسارت ندارم(اعم از تمسخر ، توهین و غیره)
من کلمه بیکار رو نوشتم فقط جهت تاکید چون شما به قدری مطمئن پست زده بودید ("دلت میخواد" ) که منم شک ورداشت
فکر کنم باید در مورد حرف زدنتون هم تجدید نظر کنید و زود از کوره در نرید و طاقت انتقاد رو هم داشته باشید
در مورد جمله آخرتون هم باید بگم نه تنها من خودم رو استاد یا حرفه ای نمی دونم بلکه یکی از افتخارات من اینکه خودم رو همیشه یک مبتدی که باید هنوز خیلی چیز ها رو یاد بگیره دونستم
اگر هم خدای نکرده هرگونه بی ادبی از من احساس کردید همینجا کمال عذرخواهی رو از شما دارم
نقل قول: كم كردن 2 تاريخ شمسي موجود در Textbox از يكديگر
دوست عزیز دو تاریختو تبدیل کن به میلادی بعد با تابع
DateDiff(DateInterval.Day, d1, d2)
به قول خودتون از هم کم کنید
جوابش هم درست میاد.
نقل قول: كم كردن 2 تاريخ شمسي موجود در Textbox از يكديگر
اقا ممنون كارم راه افتاد با كدهاي شما عزيزان
نقل قول: كم كردن 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
لطفا کمک کنید خلیلی عجله دارم
نقل قول: كم كردن 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