PDA

View Full Version : سوال: چرا کدی که نوشتم روز رو اشتباه تبدیل میکنه؟ کد تبدیل تاریخها به همدیگه



deltang-programmer
دوشنبه 11 آذر 1392, 06:03 صبح
با سلام و سپاس از دوستان
می خوام تاریخها رو به هم تبدیل کنم کدهایی که نوشتم با توجه به مطالبیه که از اینترنت پیدا کردم ولی در بخش روز تبدیل رو درست انجام نمیده اگه امکانش هست راهنمایی کنید که کجای کارم اشتباس یا کلا فرمول تبدیل تاریخها به چه صورت؟


namespace DateToDate
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button2_Click(object sender, EventArgs e)
{
int sal, mah, d;
if (radioButton1.Checked == true)
{
int m = n;
n = n + 297;
n -= 347;
sal = n / 365 + 1;
mah = n % 365;
if (mah <= 186)
{
d = mah % 31;
mah /= 31;
}
else
{
d = mah % 31;
mah /= 30;
}
mah++;
label2.Text = sal.ToString() + "/" + mah.ToString() + "/" + d.ToString();// mah = haman rooz ast.
n = m;
}
else if (radioButton3.Checked == true)
{
int m = n;
n -= 226900;
n -= 347;
sal = n / 365 + 1;
mah = n % 365;
if (mah <= 186)
{
d = mah % 31;
mah = mah / 31;
}
else
{
d = mah % 30;
mah = mah / 30;
}
mah++;
label2.Text = sal.ToString() + "/" + mah.ToString() + "/" + d.ToString();// mah = haman rooz ast.
n = m;
}

}

private void button3_Click_1(object sender, EventArgs e)
{
int sal, mah, i = 0;
if (radioButton2.Checked == true)
{
int m = n;
n = n -297;
n -= 358;
sal = n / 354 + 1;
mah = n % 354;
while (mah > 30)
{
if (i % 2 == 0)
mah -= 29;
else
mah -= 30;
i++;
}
i++;

label2.Text = sal.ToString() + "/" + i.ToString() + "/" + mah.ToString();// mah = haman rooz ast.
n = m;
}
else if (radioButton3.Checked == true)
{
int m = n;
n = n -227197;
n -= 358;
sal = n / 354 + 1;
mah = n % 354;
while (mah > 30)
{
if (i % 2 == 0)
mah -= 29;
else
mah -= 30;
i++;
}
i++;
label2.Text = sal.ToString() + "/" + i.ToString() + "/" + mah.ToString();
n = m;
}
}

private void button1_Click_1(object sender, EventArgs e)
{
int sal, mah, i = 0, d;
if (radioButton1.Checked == true)
{
int m = n;
int[] ary = new int[12] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
n += 227197;
n -= 503;
sal = n / 365 + 1;
mah = n % 365;
while (mah > ary[i])
{
mah = mah - ary[i];
i++;
}
i++;
d = mah;
label2.Text = sal.ToString() + "/" + i.ToString() + "/" + d.ToString();
n = m;
}
if (radioButton2.Checked == true)
{
int m = n;
n = n + 226900;
n -= 503;
int[] ary = new int[12] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
sal = n / 365 + 1;
mah = n % 365;
while (mah > ary[i])
{
mah = mah - ary[i];
i++;
}
d = mah;
i++;
label2.Text = sal.ToString() + "/" + i.ToString() + "/" + d.ToString();
n = m;
}
}
int n = 0;
private void Form1_Load(object sender, EventArgs e)
{

}


private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
if (radioButton1.Checked == true)
button3.Enabled = false;
else
button3.Enabled = true;
//ghamari be rooz
int d = Convert.ToInt32(textBox1.Text);// rooz
int m = Convert.ToInt32(textBox2.Text);// mah
int s = Convert.ToInt32(textBox3.Text);// sal
int sal; int mah = 0; int q;
m = m - 1;
while (m > 0)
{
if (m % 2 == 0)
mah += 29;
else
mah += 30;
m--;
}

sal = (s - 1) * 354;
q = (s - 1) / 4;
d = d + mah + sal + q;
n = d;
}

private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
if (radioButton2.Checked == true)
button2.Enabled = false;
else
button2.Enabled = true;
//shamsi be rooz
int d = Convert.ToInt32(textBox1.Text);// rooz
int m = Convert.ToInt32(textBox2.Text);// mah
int s = Convert.ToInt32(textBox3.Text);// sal
int sal, mah, q;
m = m - 1;
if (m <= 6)
mah = m * 31;
else
mah = m * 30 + 6;
sal = (s - 1) * 365;
q = (s - 1) / 4;
d = d + sal + mah + q;
n = d;
}

private void radioButton3_CheckedChanged(object sender, EventArgs e)
{
if (radioButton3.Checked == true)
button1.Enabled = false;
else
button1.Enabled = true;
//miladi be rooz
int d = Convert.ToInt32(textBox1.Text);// rooz
int m = Convert.ToInt32(textBox2.Text);// mah
int s = Convert.ToInt32(textBox3.Text);// sal
int[] ary = new int[12] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int sal; int mah = 0; int q; int i = 0;
m = m - 1;
while (m > 0)
{
mah = mah + ary[i];
m--;
}

sal = (s - 1) * 365;
q = (s - 1) / 4;
d = d + mah + sal + q;
n = d;
}


}
}

rahnema1
دوشنبه 11 آذر 1392, 06:50 صبح
توی دات نت خودش تقویمهای مختلف رو داره


System.Globalization.PersianCalendar pcc = new System.Globalization.PersianCalendar();
System.Globalization.HijriCalendar hcc = new System.Globalization.HijriCalendar();
hcc.HijriAdjustment=-1;

deltang-programmer
سه شنبه 12 آذر 1392, 00:19 صبح
مرسی از پاسختون دوست عزیز ولی من واسه پروژه می خواستم
مال میلادی به شمسی و بالعکس پیدا کردم که از طریق سویچ کیس
ولی هر جور بالا و پایین میکنم نمیتونم فرمول قمری رو به دست بیارم اینکه چجوری شمسی به میلادی یا بالعکس تبدیل کنم
بازهم ممنون