C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.72927 の関連記事表示

<< 0 >>
■72927  Re[2]: 文字列型の時刻を日付型へ変換ができない
□投稿者/ nkane -(2014/08/01(Fri) 15:24:44)
    魔界の仮面弁士様
    
    ご回答、誠にありがとうございます。
    
    仕様を記載せず、申し訳ありませんでした。
    
    仕様として、00:00〜24:00までの期間での時間数を算出するため、「深夜22時から明朝5時まで」のケースだと例えるなら
    8月1日 22:00〜24:00
    8月2日 00:00〜05:00
    という2回に分けて算出します。
    
    どうやら、24:00というのが日付型として認識されないようなので、00:00と入力された場合は23:59として
    何分経過したかを算出後に1分だけを数値型にして加算する方法で下記のコードを組んでみました。
    
                '開始時間と終了時間の値を取得
                Dim starttime1, endtime1 As DateTime
                Dim timeflag As Integer '終了時刻を00:00と入力した場合の判定フラグ
    
                starttime1 = txtStartHour1.Text.ToString() & ":" & txtStartMinutes1.Text.ToString()
                endtime1 = txtEndHour1.Text.ToString() & ":" & txtEndMinutes1.Text.ToString()
    
                '24:00は日付型として認識されないため、23:59とし、
                '酸素量の計算時にトータル分数に1を足すこととする。
                If endtime1 = "00:00" Then
                    endtime1 = "23:59"
                    timeflag = 1
                Else
                    timeflag = 0
                End If
    
                '終了時間と開始時間の差を計算
                Dim jikan As TimeSpan
                jikan = endtime1.Subtract(starttime1)
    
                '時刻の差がマイナスの値の場合
                If jikan.TotalMinutes < 0 Then
    
                    MsgBox("終了時間が開始時間より過去になっています。" & vbCrLf & "時刻の修正をしてください。", vbCritical)
                    txtStartHour1.Focus()
    
                Else
    
                    '分に変換した時間と流量の積を算出
                    Dim total As Integer
    
                    If timeflag = 0 Then
                        '終了時間が00:00以外であった場合の計算方法
                        total = Int(jikan.TotalMinutes) * Int(txtRyuryo1.Text)
                    Else
                        '終了時間が00:00であった場合の計算方法
                        total = Int(jikan.TotalMinutes) + 1
                        total = total * Int(txtRyuryo1.Text)
                    End If
    
                    txtTotal1.Text = total
    
                End If
    
    この考え方より良い方法があればご教示をお願いいたします。
    Timespanを活用すればもっと良い方法がありそうな気がしますが、全く思いつきません・・・
    
記事No.72912 のレス /過去ログ122より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -