PDA

View Full Version : حرفه ای: بدست آوردن تعداد روز،ماه،سال بین دو تاریخ مشخص



سعید کشاورز
سه شنبه 21 آذر 1391, 00:11 صبح
سلام دوستان...
دوتا تکست باکس دارم که توی اونا کاربر تاریخ عضویت و تاریخ پایان عضویت رو مشخص میکنه..فرمت اونا ثابت هستند به شکل زیر
1391/09/21 شروع عضویت
1392/09/21 پایان عضویت
چجوری میشه فهمید چند روز یا چند ماه تا پایان عضویت زمان باقی مونده؟
اینم بگم که برای دریافت تاریخ در زمان عضویت یک فرد جدید از کامپوننت hm_FarsiCalendar استفاده کردم.
آیای توی سی شارپ قابلیتی وجود داره که این کار رو انجام بده؟ یا خودم باید کد نویسی کنم؟

rasoul_par
سه شنبه 21 آذر 1391, 01:09 صبح
فکر نکنم همچین قابلیتی داشته باشه چون تکست باکس به صورت رشته ذخیره می کنه، اما با کد خیلی راحته، ببین

string[] Date1 = textBox1.Text.Split('/');

اینکار یک آرایه از رشته می سازه و سه بخش تکست باکس رو که با / جدا شدن رو توش میریزه!

patrick5053
سه شنبه 21 آذر 1391, 06:53 صبح
اين رو دانلود كن كمكت ميكنه
موفق باشيد.
http://uplod.ir/mr4g1dqau4ec/shamsi.rar.htm

Y_Safaiee
سه شنبه 21 آذر 1391, 09:01 صبح
سلام دوست من

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


private void button1_Click(object sender, EventArgs e)
{
int saal = 1391;
int month = 9;
int day = 16;
long d1 = (saal * 365) + (month * 30) + day;


int saal2 = 1392;
int month2 = 10;
int day2 = 16;
long d2 = (saal2 * 365) + (month2 * 30) + day2;

d2 -= d1;

int y = 0, m = 0,d=0;
while (d2 >= 365)
{
y++;
d2-=365;
}
while (d2 >= 30)
{
m++;
d2-=30;
}

string etebar = y + " سال و " + m + " ماه و " + d2 + " روز ";
MessageBox.Show("میزان روز باقی مانده از اعتبار کارت شما :" + etebar );

}


خروجی کد بالا :
96450


1.فقط شما لازمه جای سال و ماه و روزها اعداد تفکیک شده تکس باکس ها رو قرار بدین.

2.این یه سمپل کده و من پیش فرض گفتم ماه های من 30 روزس

راههای دیگه ای هم هست.

موفق باشی
بایت بایت

saeed.8350028
سه شنبه 21 آذر 1391, 09:39 صبح
سلام دوست من

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


private void button1_Click(object sender, EventArgs e)
{
int saal = 1391;
int month = 9;
int day = 16;
long d1 = (saal * 365) + (month * 30) + day;


int saal2 = 1392;
int month2 = 10;
int day2 = 16;
long d2 = (saal2 * 365) + (month2 * 30) + day2;

d2 -= d1;

int y = 0, m = 0,d=0;
while (d2 >= 365)
{
y++;
d2-=365;
}
while (d2 >= 30)
{
m++;
d2-=30;
}

string etebar = y + " سال و " + m + " ماه و " + d2 + " روز ";
MessageBox.Show("میزان روز باقی مانده از اعتبار کارت شما :" + etebar );

}


خروجی کد بالا :
96450


1.فقط شما لازمه جای سال و ماه و روزها اعداد تفکیک شده تکس باکس ها رو قرار بدین.

2.این یه سمپل کده و من پیش فرض گفتم ماه های من 30 روزس

راههای دیگه ای هم هست.

موفق باشی
بایت بایت

سلام با تشکر از کد شما
ولی این کد سال های کبیسه، ماه های 31،29 و 30 روزه را در نظر نمیگیره!
راهی برای محاسبه ساده این ها هست؟

Y_Safaiee
سه شنبه 21 آذر 1391, 10:13 صبح
سلام دوست من

ابتدام گفتم سمپل کده و فقط جهت آشنایی یکی از الگوریتمهای پیاده سازیش نوشتمش

برای محاسبه تعداد روزهای ماه 2راه دارین :

1.توسط شرط IF ماه ها رو تفکیک کنین,یعنی اگه طرف 4 گذاشته بود (تیرماه) تو قسمت روز تا 31 قبول کنه اما اگه طرف 10 گذاشته بود(دی ماه) قسمت روز تا 30 بیشتر قبول نکنه.

2.توسط PersianCalender ماه ها رو بررسی و تعداد روزهای موجود در اون ماه رو برگردونین.PersianCalender سال های کبیسه رو هم ساپورت میکنه.

موفق باشین
بایت بایت