PDA

View Full Version : کد تشخیص سال کبیسه شمسی و میلادی



nima898
دوشنبه 04 آبان 1388, 12:56 عصر
سلام
کدی که بتونه کبیسه بودن سال شمسی و میلادی رو تشخیص بده :


Private Sub TextBoxSH_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBoxSH.TextChanged
Dim s, s1 As Integer
s = Val(textboxSH.Text)
s1 = s Mod 33
Select Case s1
Case 1, 5, 9, 13, 17, 22, 26, 30
TextBoxKSH.Text = "Kabiseh"
Case Else
TextBoxKSH.Text = "Not Kabiseh"
End Select
End Sub
Private Sub TextBoxM_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBoxM.TextChanged
Dim m As Integer
m = Val(TextBoxM.Text)
If m Mod 400 = 0 Then
TextBoxKM.Text = "Kabiseh"
Else If m Mod 100 = 0 Then
TextBoxKM.Text = "Not Kabiseh"
Else If m Mod 4 = 0 Then
TextBoxKM.Text = "Kabiseh"
Else
TextBoxKM.Text = "Not Kabiseh"
End If
End Sub

ali_md110
دوشنبه 04 آبان 1388, 14:19 عصر
دوست من کارتون درست
ولی خود دات نت کلاس persiancalendar رو ارائه کرده با یک خط میتونی کبیسه بودن سال رو چک کنی

Dim p As New Globalization.PersianCalendar
If p.IsLeapYear(1388) Then

End If

nima898
دوشنبه 04 آبان 1388, 14:40 عصر
درواقع هدف من الگوریتم محاسبه بود
کد تبدیل تاریخ شمسی به میلادی و برعکس هم نوشتم (بدون استفاده از امکانات)
که هدفم تمرین برنامه نویسی پردازشی محاسباتی بود درحالی که با این کد که از همین سایت دریافت کردم


Function MiladiToShamsi(ByVal tar AsDate) AsString
Dim A AsDate = CDate(tar.Year & "/" & tar.Month & "/" & tar.Day)
TextBox3.Text = A
Dim B AsNew System.Globalization.PersianCalendar
Return B.GetYear(A) & "/" & B.GetMonth(A) & "/" & B.GetDayOfMonth(A)
EndFunction

میشه به جا 400 خط کد استفاده کرد

hossain1037
پنج شنبه 15 تیر 1391, 18:13 عصر
عالی بود ممنون

faridsmart
شنبه 23 فروردین 1393, 08:51 صبح
عالی بود ممنون
مرسی از دوستان عزیز
بااجازه اساتید، یکی از کاربردهای استفاده از این یک خط کد ارزشمند رو که دات نت در اختیار ما قرار داده رو گذاشتم،
توضیح اینکه این تابع رو برای چک کردن متناسب بودن مقدار ماه با روز رو برای استفاده خودم نوشتم امیدوارم براتون مفید باشه :)

private bool isCoordinatedMonthDayValue(string month, string day)
{
System.Globalization.PersianCalendar pcal = new System.Globalization.PersianCalendar();


bool kabise = pcal.IsLeapYear(pcal.GetYear(DateTime.Now));
decimal currentMonth = Convert.ToDecimal(pcal.GetMonth(DateTime.Now).ToSt ring("mm"));
decimal result = Math.Round(decimal.Parse(month) / decimal.Parse(day));


if (currentMonth <= 1 && currentMonth <= 6)
{
if (result > 31)
return false;
}
else if (currentMonth <= 7 && currentMonth <= 11)
{
if (result > 30)
return false;
}
else if (currentMonth == 12)
{
if ((kabise && result > 30) || (!kabise && result > 29))
return false;
}
else
return false;
// if u passes from all traps, returns True ;)
return true;
}