PDA

View Full Version : چطور در تاريخ شمسي ماه و سال رو جلو ببرم



swallow.pa
سه شنبه 19 دی 1391, 07:09 صبح
با سلام
يك تاريخ رو دارم مثلا 1391/10/19 حالا مي خوام براي بيست ماه اين تاريخ رو جلو ببرم كه ماه و سال تغيير كنه
بيست ماه يك فرضيه است شايد 30 ماه و شايد 100 ماه
بنظر شما چطور مي تونم اين كار رو انجام بدم
ممنون

swallow.pa
سه شنبه 19 دی 1391, 20:24 عصر
یعنی کسی نظری نداره

ghayour
سه شنبه 19 دی 1391, 20:45 عصر
ببین مشکلت حل میشه:
http://barnamenevis.org/showthread.php?194903-%D8%B3%D9%88%D8%B1%D8%B3-%DA%A9%D8%AF%D9%87%D8%A7%DB%8C-%D9%85%D9%81%DB%8C%D8%AF-%D9%88-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C-VB.Net&p=891125&viewfull=1#post891125

the king
چهارشنبه 20 دی 1391, 04:01 صبح
با سلام
يك تاريخ رو دارم مثلا 1391/10/19 حالا مي خوام براي بيست ماه اين تاريخ رو جلو ببرم كه ماه و سال تغيير كنه
بيست ماه يك فرضيه است شايد 30 ماه و شايد 100 ماه
بنظر شما چطور مي تونم اين كار رو انجام بدم
ممنون



Dim persian As New System.Globalization.PersianCalendar
Dim d As Date = persian.ToDateTime(1391, 10, 19, 0, 0, 0, 0)
d = persian.AddMonths(d, 30)
MessageBox.Show(DateToPersianString(d))

d = persian.AddMonths(d, 100)
MessageBox.Show(DateToPersianString(d))




Private Function DateToPersianString(ByVal d As Date)
Dim persian As New System.Globalization.PersianCalendar
Return String.Format("{0}/{1:00}/{2:00}", persian.GetYear(d), persian.GetMonth(d), persian.GetDayOfMonth(d))
End Function

gilsoft
چهارشنبه 20 دی 1391, 06:32 صبح
با سلام
يك تاريخ رو دارم مثلا 1391/10/19 حالا مي خوام براي بيست ماه اين تاريخ رو جلو ببرم كه ماه و سال تغيير كنه
بيست ماه يك فرضيه است شايد 30 ماه و شايد 100 ماه
بنظر شما چطور مي تونم اين كار رو انجام بدم
ممنون

سلام دوست عزیز

ضمن تایید کدهای پست 4# .. کامل ترش تقدیم شما ... (پیش نیاز یک Form .. یک TextBox و سه تا Button) :
Public Class Form1

Private GPC As New System.Globalization.PersianCalendar

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Me.Button1.Text = "Add Year"
Me.Button2.Text = "Add Mounth"
Me.Button3.Text = "Add Day"
End Sub

Private Function ShToMi(ByVal pDate As String) As Date
pDate = pDate.Trim
Dim splt() As String = Split(pDate, "/")
Dim _YY As UShort = Val(splt(0))
Dim _MM As Byte = Val(splt(1))
Dim _DD As Byte = Val(splt(2))
Return (GPC.ToDateTime(_YY, _MM, _DD, 0, 0, 0, 0))
End Function 'تبدیل تاریخ شمسی به میلادی

Private Function MiToSh(ByVal DT As Date) As String
Return (String.Format("{0}/{1:00}/{2:00}", {GPC.GetYear(DT), GPC.GetMonth(DT), GPC.GetDayOfMonth(DT)}))
End Function 'تبدیل تاریخ میلادی به شمسی

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
TextBox1.Text = MiToSh(GPC.AddYears(ShToMi(TextBox1.Text.Trim), 1))
End Sub

Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
TextBox1.Text = MiToSh(GPC.AddMonths(ShToMi(TextBox1.Text.Trim), 1))
End Sub

Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
TextBox1.Text = MiToSh(GPC.AddDays(ShToMi(TextBox1.Text.Trim), 1))
End Sub
End Class

مقدار "1" سطرهای 25-29 و 33 رو بسته به نیاز خودت میتونی تغییر بدی ... اگه عدد منفی وارد کنی .. مقدار "سال/ماه/روز" کسر(منها) میشه ...

موفق باشید