PDA

View Full Version : تبدیل تعداد روز به سال/روز/ماه



webnama
دوشنبه 15 خرداد 1391, 16:28 عصر
سلام دوستان
چطور میتونیم از طریق تعداد روزها ؛ به سال / ماه / روز برسیم


برای سال که باید تقسیم بر 365 کنیم
برای ماه تقسیم بر 30
و باقیمانده هم میشه تعداد روز

اما نتونستم بدست بیارم :(
لطفا راهنمایی کنید

harani
دوشنبه 15 خرداد 1391, 16:47 عصر
من سوال شما را درست نفهمیدم اگه مشکا ریاضی دارید تعداد ماه = روز * 31 (برای 6 ماه اول) و روز * 30 (برای 5 ماه دوم بدون اکتساب کبیسه) و روز * 29 (برای ماه آخر بدون اکتساب کبیسه) و 30*6(برای 6 ماه دوم سال کبیسه) (که کبیسه یعنی سال % 4 =! 0) و تعداد سال هم = ماه * 12 امیدوارم مشکلتان حل شده باشد

sajad.net
دوشنبه 15 خرداد 1391, 16:57 عصر
من قبلا این رو نوشتم ولی من دیگه سال رو حساب نکردم
فقط روز و ماه رو محاسبه می کنه
ولی برای سال طبق نظر دوستمون عمل کنی درسته

private void boxsy_TextChanged(object sender, EventArgs e)
{
try
{
int numy, day = 0, mon = 0, ext;
numy = Int32.Parse(boxsy.Text);
if (numy <= 31)
{
mon = 1; day = numy;
}
if (numy > 31 && numy <= 186)
{
mon = (numy / 31) + 1; day = numy % 31;
if (day == 0)
{
mon--; day = 31;
}
}
if (numy > 186 && numy <= 365)
{
ext = numy - 186;
if (ext <= 30)
{
mon = 7; day = ext;
}
if (ext > 30)
{
mon = (ext / 30) + 7; day = ext % 30;
if (day == 0)
{
mon--; day = 30;
}
}
}
labday.Text = ("Day = " + day.ToString());
labmon.Text = ("Moa = " + mon.ToString());
}
catch { }
}

ahmadasm
دوشنبه 15 خرداد 1391, 16:58 عصر
سلام
اگر قصد استفاده از تاریخ شمسی رو داری یه مبدل در آدرس زیر وجود داره
kiosk14.blogfa.com

novinmehran
سه شنبه 19 اسفند 1399, 16:39 عصر
من قبلا این رو نوشتم ولی من دیگه سال رو حساب نکردم
فقط روز و ماه رو محاسبه می کنه
ولی برای سال طبق نظر دوستمون عمل کنی درسته

private void boxsy_TextChanged(object sender, EventArgs e)
{
try
{
int numy, day = 0, mon = 0, ext;
numy = Int32.Parse(boxsy.Text);
if (numy <= 31)
{
mon = 1; day = numy;
}
if (numy > 31 && numy <= 186)
{
mon = (numy / 31) + 1; day = numy % 31;
if (day == 0)
{
mon--; day = 31;
}
}
if (numy > 186 && numy <= 365)
{
ext = numy - 186;
if (ext <= 30)
{
mon = 7; day = ext;
}
if (ext > 30)
{
mon = (ext / 30) + 7; day = ext % 30;
if (day == 0)
{
mon--; day = 30;
}
}
}
labday.Text = ("Day = " + day.ToString());
labmon.Text = ("Moa = " + mon.ToString());
}
catch { }
}

سلام میشه سال رو هم روی این اضافه کنین که سال رو هم نشون بده

the king
سه شنبه 19 اسفند 1399, 19:03 عصر
سلام میشه سال رو هم روی این اضافه کنین که سال رو هم نشون بده
فرضا ورودی مساله 1000 روز هست :

var days = 1000;

و تقویم شمسی رو بکار می بریم :

var persian = new System.Globalization. PersianCalendar();

یک تاریخی رو مبنا قرار می دهیم، که در اینکه چه روز هایی کبیسه باشه تاثیر داره :

var baseDate = persian.ToDateTime( 1400, 1, 1, 0, 0, 0, 0); // 1400/01/01

و تاریخ نهایی هم که فلان تعداد روز بعد از اون تاریخ مبنا است :

var finalDate = persian.AddDays( baseDate, days);

ابتدا اونقدر سال پیشروی می کنیم که از تاریخ مبنا به سال نهایی برسیم :

var year = 0;
while (persian.AddYears( baseDate, 1) <= finalDate)
{
year++;
baseDate = persian.AddYears( baseDate, 1);
}

سپس اونقدر ماه پیشروی می کنیم تا به سال و ماه نهایی برسیم :

var month = 0;
while (persian.AddMonths( baseDate, 1) <= finalDate)
{
month++;
baseDate = persian.AddMonths( baseDate, 1);
}

و نهایتا اونقدر روز پیشروی می کنیم تا به سال و ماه و روز نهایی برسیم :

var day = 0;
while (persian.AddDays( baseDate, 1) <= finalDate)
{
day++;
baseDate = persian.AddDays( baseDate, 1);
}

و سال و ماه و روز در طی سه پیشروی شمارش شده :

MessageBox.Show( "Year = " + year + " Month = " + month + " Day = " + day);



var days = 1000;
var persian = new System.Globalization. PersianCalendar();
var baseDate = persian.ToDateTime( 1400, 1, 1, 0, 0, 0, 0); // 1400/01/01
var finalDate = persian.AddDays( baseDate, days);
var year = 0;
while ( persian.AddYears( baseDate, 1) <= finalDate)
{
year++;
baseDate = persian.AddYears( baseDate, 1);
}
var month = 0;
while ( persian.AddMonths( baseDate, 1) <= finalDate)
{
month++;
baseDate = persian.AddMonths( baseDate, 1);
}
var day = 0;
while ( persian.AddDays( baseDate, 1) <= finalDate)
{
day++;
baseDate = persian.AddDays( baseDate, 1);
}
MessageBox.Show( "Year = " + year + " Month = " + month + " Day = " + day);