حلش کردم .
private bool TimeChecked()
{
bool isCorrect = false;
System.Globalization.PersianCalendar calendar = new System.Globalization.PersianCalendar();
int year = Convert.ToInt32(dateShamsi.Substring(0, 4));
int Month = Convert.ToInt32(dateShamsi.Substring(5, 2));
int Day = Convert.ToInt32(dateShamsi.Substring(8, 2));
int beginTimeHour = Convert.ToInt32(ShifttimeBegin.Substring(0, 2));
int beginTimeMin = Convert.ToInt32(ShifttimeBegin.Substring(3, 2));
int EndTimeHour = Convert.ToInt32(ShifttimeEnd.Substring(0, 2));
int EndTimeMin = Convert.ToInt32(ShifttimeEnd.Substring(3, 2));
if (RoozBaadi == false)
{
if (Convert.ToInt32(txtHourBegin.Text) < beginTimeHour || Convert.ToInt32(txtHourEnd.Text) > EndTimeHour)
{
MessageBox.Show("ساعت وارد شده در شیفت مورد نظر نمی باشد");
isCorrect = false;
return isCorrect;
}
else if (Convert.ToInt32(txtHourBegin.Text) > Convert.ToInt32(txtHourEnd.Text))
{
MessageBox.Show("ساعت پایان از ساعت شروع کمتر است");
isCorrect = false;
return isCorrect;
}
else if (Convert.ToInt32(txtHourBegin.Text) == Convert.ToInt32(txtHourEnd.Text))
{
if (Convert.ToInt32(txtMinBegin.Text) > Convert.ToInt32(txtMinEnd.Text))
{
MessageBox.Show("دقیقه پایان از دقیقه شروع کمتر است");
isCorrect = false;
return isCorrect;
}
else
{
DateTime dt1 = calendar.ToDateTime(year, Month, Day, Convert.ToInt32(txtHourBegin.Text.Trim()),
Convert.ToInt32(txtMinBegin.Text.Trim()), 0, 0);
DateTime dt2 = calendar.ToDateTime(year, Month, Day, Convert.ToInt32(txtHourEnd.Text.Trim()),
Convert.ToInt32(txtMinEnd.Text.Trim()), 0, 0);
double totalMinute = (dt2 - dt1).TotalMinutes;
isCorrect = true;
return isCorrect;
}
}
else if (Convert.ToInt32(txtHourBegin.Text) < Convert.ToInt32(txtHourEnd.Text))
{
DateTime dt1 = calendar.ToDateTime(year, Month, Day, Convert.ToInt32(txtHourBegin.Text.Trim()),
Convert.ToInt32(txtMinBegin.Text.Trim()), 0, 0);
DateTime dt2 = calendar.ToDateTime(year, Month, Day, Convert.ToInt32(txtHourEnd.Text.Trim()),
Convert.ToInt32(txtMinEnd.Text.Trim()), 0, 0);
double totalMinute = (dt2 - dt1).TotalMinutes;
isCorrect = true;
return isCorrect;
}
}
else
{
List<int> timeList = new List<int>();
for (int i = beginTimeHour; i <= 23; i++)
{
timeList.Add(i);
}
for (int i = 0; i <= EndTimeHour; i++)
{
timeList.Add(i);
}
int timeBegin = Convert.ToInt32(txtHourBegin.Text.Trim());
int timeEnd = Convert.ToInt32(txtHourEnd.Text.Trim());
bool ExistHourBeginInShift = timeList.Contains(timeBegin);
bool ExistHourEndInShift = timeList.Contains(timeEnd);
if (ExistHourBeginInShift && ExistHourEndInShift)
{
if (beginTimeHour < timeBegin && timeBegin <= 23 && beginTimeHour < timeEnd && timeEnd <= 23)
{
DateTime dt1 = calendar.ToDateTime(year, Month, Day, Convert.ToInt32(txtHourBegin.Text.Trim()),
Convert.ToInt32(txtMinBegin.Text.Trim()), 0, 0);
DateTime dt2 = calendar.ToDateTime(year, Month, Day, Convert.ToInt32(txtHourEnd.Text.Trim()),
Convert.ToInt32(txtMinEnd.Text.Trim()), 0, 0);
double totalMinute = (dt2 - dt1).TotalMinutes;
if (totalMinute < 0 || totalMinute == 0)
{
MessageBox.Show("اختلاف ساعت وارد شده مجاز نمی باشد . لطفا ساعت را چک کنید");
isCorrect = false;
return isCorrect;
}
else
{
MessageBox.Show(totalMinute.ToString());
}
}
if (beginTimeHour < timeBegin && timeBegin <= 23 && 0 <= timeEnd && timeEnd < EndTimeHour)
{
DateTime dt1 = calendar.ToDateTime(year, Month, Day, Convert.ToInt32(txtHourBegin.Text.Trim()),
Convert.ToInt32(txtMinBegin.Text.Trim()), 0, 0);
Day++;
DateTime dt2 = calendar.ToDateTime(year, Month, Day, Convert.ToInt32(txtHourEnd.Text.Trim()),
Convert.ToInt32(txtMinEnd.Text.Trim()), 0, 0);
double totalMinute = (dt2 - dt1).TotalMinutes;
if (totalMinute < 0 || totalMinute == 0)
{
MessageBox.Show("اختلاف ساعت وارد شده مجاز نمی باشد . لطفا ساعت را چک کنید");
isCorrect = false;
return isCorrect;
}
else
{
MessageBox.Show(totalMinute.ToString());
}
}
if (0 <= timeBegin && timeBegin < EndTimeHour && 0 <= timeEnd && timeEnd < EndTimeHour)
{
Day++;
DateTime dt1 = calendar.ToDateTime(year, Month, Day, Convert.ToInt32(txtHourBegin.Text.Trim()),
Convert.ToInt32(txtMinBegin.Text.Trim()), 0, 0);
DateTime dt2 = calendar.ToDateTime(year, Month, Day, Convert.ToInt32(txtHourEnd.Text.Trim()),
Convert.ToInt32(txtMinEnd.Text.Trim()), 0, 0);
double totalMinute = (dt2 - dt1).TotalMinutes;
if (totalMinute < 0 || totalMinute == 0)
{
MessageBox.Show("اختلاف ساعت وارد شده مجاز نمی باشد . لطفا ساعت را چک کنید");
isCorrect = false;
return isCorrect;
}
else
{
MessageBox.Show(totalMinute.ToString());
}
}
if (0 <= timeBegin && timeBegin < EndTimeHour && beginTimeHour < timeEnd && timeEnd <= 23)
{
MessageBox.Show("ساعت پایان وارد شده در شیفت مورد نظر نمی باشد");
isCorrect = false;
return isCorrect;
}
}
else
{
MessageBox.Show("ساعت وارد شده در شیفت مورد نظر نمی باشد");
isCorrect = false;
return isCorrect;
}
}
return isCorrect;
}