PDA

View Full Version : حلقه for با چک کردن زمان



aliramazani
پنج شنبه 04 تیر 1394, 07:24 صبح
من به حلقه for دارم که در اونجا بررسی میکنه حلقه تا زمانی ادامه داشته باشه که زمان اول کوچکتر از زمان دوم باشه.
ولی مشکل اینجاست که اگر زمان اول ما از ساعت 22 شروع بشه و زمان دوم ما 7 صبح باشه این حلقه نقض خواهد شد. چرا که 22 بزرگتر از ساعت 7 هستش

jamal_ch
پنج شنبه 04 تیر 1394, 07:59 صبح
سلام سوالتون رو اگه میشه بیشتر توضیح بدین ممنون

reza_ali202000
پنج شنبه 04 تیر 1394, 08:00 صبح
شما ساعت رو کامل بگیر. اگه am بود با 12 جمعش کن. اگه pm بود 12 تا کم کن. حالا مهم نیس بازه زمانیت کی هست دیگه.
مثلا: 22pm=>10
مثلا:7am=>19
حالا این دوتا رو که از هم کم کنی نتیجه همون 9 ساعت مورد نظر میشه.

alireza264
پنج شنبه 04 تیر 1394, 11:44 صبح
من به حلقه for دارم که در اونجا بررسی میکنه حلقه تا زمانی ادامه داشته باشه که زمان اول کوچکتر از زمان دوم باشه.
ولی مشکل اینجاست که اگر زمان اول ما از ساعت 22 شروع بشه و زمان دوم ما 7 صبح باشه این حلقه نقض خواهد شد. چرا که 22 بزرگتر از ساعت 7 هستش

سلام
بجای for بهتره از while استفاده کنی و برای بررسی شرظ

DateTime a = new DateTime(2015, 05, 11, 22, 15, 00);
DateTime b = new DateTime(2015, 05, 12, 7, 45, 00);
while ((a - b).TotalMinutes < 0)
{

a = DateTime.Now;
}

Mahmoud.Afrad
پنج شنبه 04 تیر 1394, 12:47 عصر
من به حلقه for دارم که در اونجا بررسی میکنه حلقه تا زمانی ادامه داشته باشه که زمان اول کوچکتر از زمان دوم باشه.
ولی مشکل اینجاست که اگر زمان اول ما از ساعت 22 شروع بشه و زمان دوم ما 7 صبح باشه این حلقه نقض خواهد شد. چرا که 22 بزرگتر از ساعت 7 هستش

در صورتی که زمانها دارای تاریخ هم باشند دیگه مشکلی نخواهی داشت.

alireza264
پنج شنبه 04 تیر 1394, 13:13 عصر
سلام نیازی به مساوی بودن تاریخ نیست متد های total اختلاف رو نشون میدن در مثال بالا باتوجه به کوچکتر بودن تاریخ شروع

(a - b).TotalMinutes -570 اختلاف به دقیقه
(a - b).TotalSeconds -34200 اختلاف به ثانیه
(a - b).TotalMilliseconds -34200000 اختلاف به میلی ثانیه
(a - b).TotalHours -9.5 اختلاف به ساعت

aliramazani
پنج شنبه 04 تیر 1394, 17:11 عصر
بزارین واضح تر بگم:

کدهایی که میزارم مثال هستند:


string tieme1="23";
string time2="7";
for(int i=0;time1<time2;i++)
{
time1 + 18;
}


قبلش بگم میدونم این کد سینتکس ارور داره ولی میخواستم منظورم رو بفهمونم که یعنی از ساعت 23 به time1 مقدار 18 دقیقه 18 دقیقه اظافه کن تا برسه به ساعت 7 صبح.
در ساعتهای دیگه مشکلی نداره ولی اینجا چون در اصل ساعت time2 کوچکتر از ساعت آغازه از لحاظ عددی ایراد میگیره و حلقه نقض میشه.

alireza264
پنج شنبه 04 تیر 1394, 17:20 عصر
بزارین واضح تر بگم:

کدهایی که میزارم مثال هستند:


string tieme1="23";
string time2="7";
for(int i=0;time1<time2;i++)
{
time1 + 18;
}


قبلش بگم میدونم این کد سینتکس ارور داره ولی میخواستم منظورم رو بفهمونم که یعنی از ساعت 23 به time1 مقدار 18 دقیقه 18 دقیقه اظافه کن تا برسه به ساعت 7 صبح.
در ساعتهای دیگه مشکلی نداره ولی اینجا چون در اصل ساعت time2 کوچکتر از ساعت آغازه از لحاظ عددی ایراد میگیره و حلقه نقض میشه.

سلام از باید نوع DateTime استفاده کنی و از متد های Add برای اضافه کردن

DateTime a = DateTime.Now;
DateTime b = a.AddHours(10);
while (a<b)
{
a =a.AddMinutes(18);
}




DateTime a = new DateTime(2015, 05, 11, 22, 15, 00);
DateTime b = new DateTime(2015, 05, 12, 7, 45, 00);


// DateTime b = a.AddHours(10);
while (a < b)
{
a = a.AddMinutes(18);
}