PDA

View Full Version : راهنمایی در مورد اضافه کردن یک و یا چند ماه به تاریخ داخل تکست باکس



viper2009
جمعه 18 فروردین 1391, 03:32 صبح
سلام

من می خواهم تاریخ موعد سر رسید اقساط را در جدول ثبت کنم اما مشکل اضافه کردن دارم، چه راهی را پیشنهاد می کنید؟

مثلاٌ 1391/01/18 یا 1391/1/18 در تکست باکس

برای درج در جدول اقساط باید به شکل زیر در جدول درج شود


1391/02/18
1391/03/18
1391/04/18
1391/05/18
1391/06/18
1391/07/18
1391/08/18
1391/09/18
1391/10/18
1391/11/18
1391/12/18
1392/01/18

ضمناً بگم که از کامپوننت های تاریخ استفاده کردم ولی دو مشکل دارند یک اینکه فقط به تاریخ جاری اضافه یا کم می کنند و ضمناً روزهای 31 روز و 30 و 29 روز را هم حساب می کنند و باعث کم شدن روز تاریخ به فواصل می شوند.

arash020
جمعه 18 فروردین 1391, 04:52 صبح
سلام
اگه فقط می خوای به برج اون تاریخ چند واحد اضافه بشه که
کد راحتی داره
می تونی با یه mid این کارو بکنی
من چندوقت پیش چنین چیزی رو نوشته بودم البته برای ساعت
که می تونست ساعت و دقیقه ای رو(مثلا فعلی) با ساعت و دقیقه موردنظر کاربر جمع کنه و نتیجه رو بده.
مثلا 5:4 بغداز گذشت 4:49 میشه چند؟
میشه :
9:54
از این الگوریتم برای نوشتن برنام ت استفاده کن و واسه تاریخش کن
خیلی راحت تره که...
کد اینه :
به زبان VB6
Dim h, m As Integer

h = Val(h1) + Val(h2)
m = Val(m1) + Val(m2)
If m > 59 Then
h = h + 1
m = 60 - m
If m < 1 Then
m = m * (-1)
End If
If h > 23 Then
h = 24 - h
If h < 1 Then
h = h * (-1)
End If
End If
End If
T = h & " : " & m

فرید نجفلو
جمعه 18 فروردین 1391, 11:18 صبح
دوست عزیز کد زیر رو امتحان کنید . تابع اصلی SerialDate ولی دو تابع مفید و پر کاربر هم بهتون معرفی کردم

مقدار ListBox1 بعد از اجرا به این صورت خواهد بود:


1390/02/18
1390/03/18
1390/04/18
1390/05/18
1390/06/18
1390/07/18
1390/08/18
1390/09/18
1390/10/18
1390/11/18
1390/12/18
1391/01/18
1391/02/18
1391/03/18



Public Class Form1
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim pDate = "1390/01/18"
Me.ListBox1.Items.AddRange(SerialDate(pDate, 14).ToArray)
End Sub
Private Function SerialDate(pDate As String, Months As Integer) As List(Of String)
Dim Result As New List(Of String)
Dim dy = Strings.Right(pDate, 2)
Dim gDate = CDate(GregorianDate(pDate))

For i = 1 To Months
gDate = gDate.AddMonths(1)
Result.Add(Strings.Left(PersianDate(gDate), 8) & dy)
Next
Return Result
End Function
''' <summary>
''' برگردان تاریخ میلادی به شمسی
''' </summary>
''' <param name="InDate">تاریخ میلادی</param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared 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>
Public Shared 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
End Class

omidamiry
جمعه 18 فروردین 1391, 12:05 عصر
کاری نداره چرا سختش میکنید.شما تاریخ رو به صورت رشته بگیر و با دستور گرفتن زیر رشته از رشته نقطه شروع و پایان بده و به عدد تبدیل کن و به تعداد اقساطت اضافه کن.
اگه جواب گرفتی اعلام کن
temp = Convert.ToInt32(strtdate.Substring(0, 4));
این دستور از رشته تاریخ چهار رقم اول که سال هست میگیره و به اینت تبدیل میکنه حالا جمع و تفریقش کن ........................ البته در سی شارپ

mamad1166
پنج شنبه 13 مهر 1391, 15:35 عصر
دوستان اضافه کردن سال و ماه و روز که کشکی نیست """""با یک جمع کنیم؟؟؟!!!""""" فرض کنید تاریخ 31/6/1391 یاشه خوب به وسیله جمع با یک چی میشه؟؟ هیچی! اشتباه میشه! سال کبیثه هم هست
این قضیه اضافه کردن به تاریخ مشکل من هم هست