У меня есть timePicker, который возвращает мне время вроде: «0:00 утра». Но мне нужно в моем приложении к югу времени начала от времени финиша и проверить, если он прошел один час, два ...string.Replace(); с двумя случаями?
Чтобы получить только номера из TimePicker, я сделал это:
string StartTime = _pickerStarts.Text;
string StartTime_int = string.Empty;
int _starts = 0;
for (int i = 0; i < StartTime.Length; i++)
{
if (Char.IsDigit(StartTime[i]))
StartTime_int += StartTime[i];
}
if (StartTime_int.Length > 0)
_starts = int.Parse(StartTime_int);
string EndsTime = _pickerEnds.Text;
string EndsTime_int = string.Empty;
int _ends = 0;
for (int i = 0; i < EndsTime.Length; i++)
{
if (Char.IsDigit(EndsTime[i]))
EndsTime_int += EndsTime[i];
}
if (EndsTime_int.Length > 0)
_ends = int.Parse(EndsTime_int);
// this return method is returning with the 00 on 4:00AM (example). CHANGE IT.
return _ends - _starts;
Но, как вы можете догадаться, вместо того, чтобы вернуться, например, 9 с 9:00 утра, возвращается 900. Я сделал это в течение часов часов:
string StarTime_Formated = StartTime.Replace(":00", "");
И я должен был бы сделать это за: 30 часов.
string StarTime_Formated = StartTime.Replace(":00", ",3");
Но тогда мне нужно сначала проверить содержимое строк, а затем отформатировать его. Есть ли способ сделать это (псевдокод):
string StarTime_Formated = StartTime.Replace(":00", ",3" && ":00", "");
EDIT: В ответ на комментарии ниже: Ну, компонент я использую возвращает строку. Это для контроля времени класса. Один класс может быть два раза в неделю по 1 часу каждого занятия или по одной раз в 2 часа в каждом классе. Если я это сделать:
if(_numDuration.Value == 2 && ClassDuration() == 2)
ClassDuration()
быть первым код на этом посту и _numDuration
быть IntegerUpDown
, чтобы выбрать 1 или 2 часов класса.
Метод вернется, например, «4:00 pm» и «6:00 pm», 600-400, и это намного выше двух. Мне нужно, чтобы он вернулся 2. Как я уже сказал, я могу сделать два разных .Replace("", "");
и проверить каждый случай, но мне интересно, могу ли я не просто string StarTime_Formated = StartTime.Replace(":00", ",3" && ":00", "");
Я бы использовал DateTime, если мог, но вы видите, это не мое приложение, и ... заказы. Это отстой.
Могу ли я это сделать, или я должен просто держать с двумя разделенными .Replace()
, а затем проверить чехлы?
Что случилось с просто 'если ((Конечное время - начальное время) .TotalHours> 1)' , и т.д.? – itsme86
@ itsme86 Я считаю, что проблема в том, что обе строки –
Что ?? У свойства DateTimePicker есть свойство Value. Это DateTime, а DateTime имеет свойства Minute, Hour, Seconds.Нет необходимости разбирать что-либо. – Steve