2017-01-25 1 views
0

나는 timePicker를 가지고 있는데, 그 시간은 "0:00 am"과 같습니다.string.Replace(); 두 건이 있니?

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; 
:하지만

는 TimePicker의 숫자를 얻으려면 ... 마무리 시간에서 시작 시간을 하위에 내 응용 프로그램에 필요한 그리고 한 시간, 두 통과 여부를 확인, 내가 이런 짓을

그러나 당신은 아마 대신 오전 9 예, 9, 반환하는 추측 할 수로, 내가시 시간 동안 이런 짓을 900 반환

string StarTime_Formated = StartTime.Replace(":00", ""); 

그리고 나는이 작업을 수행해야 할 것을 30 시간.

string StarTime_Formated = StartTime.Replace(":00", ",3"); 

하지만 먼저 문자열 내용을 검사하여 형식을 지정해야합니다.

string StarTime_Formated = StartTime.Replace(":00", ",3" && ":00", ""); 

편집 : 아래의 의견을 응답 : 음, 구성 요소 내가 문자열을 반환을 사용하고이 (의사 코드)를 수행하는 방법이 있나요. 수업 시간 관리 용입니다. 한 반은 매주 1 시간에 2 번 또는 각 반에 한 시간 씩 2 시간 씩 수업이 가능합니다. IntegerUpDown 1 또는 2 시간 수업을 선택할 수있는 최초의이 게시물에서 코드 _numDuration되는

if(_numDuration.Value == 2 && ClassDuration() == 2) 

ClassDuration() : 나는이 작업을 수행합니다.

"오후 4시"와 "오후 6시", 즉 600-400과 같이 메서드가 반환되며이 값은 2보다 높습니다. 대신 2를 반환해야합니다. 내가 말했듯이, 나는 두 가지 다른 .Replace("", "");을 할 수 있고 각각의 경우를 점검 할 수 있지만, 내가 할 수 없다면 궁금해하고있다. string StarTime_Formated = StartTime.Replace(":00", ",3" && ":00", "");

내가 할 수 있다면 DateTime을 사용 하겠지만, 실제로는 내 앱이 아니다. 그리고 ... 명령들. 그것은 빤다.

그럴 수 있습니까? 아니면 그냥 두 가지로 계속해야합니까? .Replace()으로 구분 한 다음 사례를 확인하십시오.

+1

단지'만약 잘못 이것이 (당신이 형식을 조정해야 할 수도 있습니다하지만이 작동합니다) 시도 ((endTime- 사용자 - startTime을) .TotalHours> 1)' , 등? – itsme86

+0

@ itsme86 나는 둘 다 문자열이라고 문제가 있다고 생각한다. –

+1

무엇 ?? DateTimePicker에는 Value 속성이 있습니다. 그것은 DateTime이고 DateTime에는 Minute, Hour, Seconds 속성이 있습니다.아무 것도 구문 분석 할 필요가 없습니다. – Steve

답변

2

해결하려는 문제는 시간 문자열을 구문 분석하는 방법입니까?

제대로 처리하는 것이 까다롭고 몇 줄이 넘습니다. DateTime이 해드 리겠습니다.

var start= DateTime.Parse(_pickerStarts.Text); 
var end= DateTime.Parse(_pickerEnds.Text); 
var result= end-start; 
var resultInHours= result.TotalHours; 
Console.WriteLine(result); 
Console.WriteLine(resultInHours); 

----------------------------------------

하지만 문자열을 바꾸려면 질문에 오타가있을 수 있습니다. 당신이 원하는나요 :

string StarTime_Formated = StartTime.Replace(":30", ",3").Replace(":00", ""); 
+0

정말 답을 알 수 있지만 DateTimes가 아니므로 작업중인 항목은 문자열입니다. 한 개의 .Replace() 메서드에서 두 개의 다른 경우에 대해 .Replace()를 수행 할 수 있는지 궁금합니다. – Pelicer

+0

내가 문자열로 시작한다는 것을 알았습니까? –

+0

죄송합니다. 지금 당장 대답을 다시 읽어보십시오. 그것이 작동하면 곧 확인하고 점검 할 것입니다. – Pelicer

1

var startDate = DateTime.ParseExact(your_start_time_string, "hh:mma", CultureInfo.InvariantCulture); 
var endDate = DateTime.ParseExact(your_end_time_string, "hh:mma", CultureInfo.InvariantCulture); 
var r = endDate-startDate; 
//do further processing on result