2017-01-25 4 views
0

"0:00 am"のような時間を私に返すtimePickerがあります。string.Replace(); 2つの場合?

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の番号のみを取得するには、2 ...

を1時間を経過した場合、私はこれをしなかった終了時刻から開始時刻をサブに私のアプリで必要とチェック

しかし、あなたはおそらく午前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", ""); 

EDIT:以下のコメントを受けて:まあ、コンポーネント私は文字列を返しますを使用しています。この(擬似コード)を行うための方法はあります。これは、クラス時間のコントロールです。 1つのクラスは週に2回、1時間に1時間、または1週間に2時間、各クラスにすることができます。

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

ClassDuration()は、この記事の最初のコードであることと_numDuration 1時間または2時間のクラスを選択するIntegerUpDownいる:私はこれを行う場合。

メソッドは、たとえば "4:00 pm"と "6:00 pm"、600-400のように戻り、それは2よりも高いです。代わりに2を返す必要があります。私が言ったように、私は、それは本当に私のアプリはありませんが、二つの異なる.Replace("", "");を行い、それぞれのケースを確認し、私はできれば私はちょうどstring StarTime_Formated = StartTime.Replace(":00", ",3" && ":00", "");

私は日時を使用したいことができない場合、私は思ったんだけど、しかし、あなたは見ることができますそして...命令。それは吸う。

私はそれを行うことができますか、または私はちょうど2つを分離して.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ではなく、私が作業しているのは文字列です。 1つの.Replace()メソッドで2つの異なるケースに対して.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 
関連する問題