|
■No78753 (とくま さん) に返信
それとは別に、ぱっと見以上にやっかいなコードなんですね。。。
>それから、日時や時間を作るのに文字列からのParseを
>使うのは止めた方がいいです。
私もなんのことかなぁ…って思ってたら
http://dobon.net/vb/dotnet/string/datetimeparse.html
>'日付を省略すると、現在の日付となる
なんじゃこりゃあ。。。
Debug.Print(NowTime.ToString("06:00"))
Dim tt1 As Date = NowTime.ToString("06:00")
Debug.Print(tt1.ToString("yyyy/MM/dd HH:mm"))
Debug.Print(tt1.ToString)
Dim Time1 As DateTime = DateTime.Parse(tt1)
Debug.Print(Time1.ToString("yyyy/MM/dd HH:mm"))
>06:00
>0001/01/01 06:00
>06:00
>2016/02/12 06:00
西暦1年1月1日になる動きと食い違ってて非常に危険ですね。
1回暗黙の文字列変換が入って時刻だけしか出力されないから
補完とか。。。予想を超えてました。
関数化してのテスト結果とPCのシステム時刻を変更してのテストが
食い違っていて???ってなってたんですん。。。
関数化したら、過去日が軒並み判定されずに未来日は全てTime3に
なっていました。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim NowTime As Date
NowTime = New DateTime(2016, 2, 10, 13, 59, 0)
Call test(NowTime)
NowTime = New DateTime(2016, 2, 10, 14, 0, 0)
Call test(NowTime)
NowTime = New DateTime(2016, 2, 10, 14, 1, 0)
Call test(NowTime)
NowTime = New DateTime(2016, 2, 12, 5, 59, 0)
Call test(NowTime)
NowTime = New DateTime(2016, 2, 12, 6, 0, 0)
Call test(NowTime)
NowTime = New DateTime(2016, 2, 12, 6, 1, 0)
Call test(NowTime)
NowTime = New DateTime(2016, 2, 12, 13, 59, 0)
Call test(NowTime)
NowTime = New DateTime(2016, 2, 12, 14, 0, 0)
Call test(NowTime)
NowTime = New DateTime(2016, 2, 12, 14, 1, 0)
Call test(NowTime)
NowTime = New DateTime(2016, 2, 12, 21, 59, 0)
Call test(NowTime)
NowTime = New DateTime(2016, 2, 12, 22, 0, 0)
Call test(NowTime)
NowTime = New DateTime(2016, 2, 12, 22, 1, 0)
Call test(NowTime)
NowTime = New DateTime(2016, 2, 13, 0, 0, 0)
Call test(NowTime)
NowTime = New DateTime(2016, 2, 13, 1, 0, 0)
Call test(NowTime)
NowTime = New DateTime(2016, 2, 14, 13, 59, 0)
Call test(NowTime)
NowTime = New DateTime(2016, 2, 14, 14, 0, 0)
Call test(NowTime)
NowTime = New DateTime(2016, 2, 14, 14, 1, 0)
Call test(NowTime)
End Sub
Sub test(t As Date)
Debug.Print("")
Debug.Print(t.ToString("yyyy/MM/dd HH:mm"))
Dim NowTime As Date = t
Dim dt1 As Date = NowTime.ToString("F")
'Dim dt2 As Date = NowTime.ToString("HH:mm")
Dim FTime As DateTime = DateTime.Parse(dt1)
'Dim DTime As DateTime = DateTime.Parse(dt2)
Dim tt1 As Date = NowTime.ToString("06:00")
Dim tt2 As Date = NowTime.ToString("14:00")
Dim tt3 As Date = NowTime.ToString("22:00")
Dim Time1 As DateTime = DateTime.Parse(tt1)
Dim Time2 As DateTime = DateTime.Parse(tt2)
Dim Time3 As DateTime = DateTime.Parse(tt3)
If Time3 < FTime Then
Debug.Print("Time3から" & NowTime)
ElseIf Time1 < FTime And FTime <= Time2 Then
Debug.Print("Time1から" & NowTime)
ElseIf Time2 < FTime And FTime <= Time3 Then
Debug.Print("Time2から" & NowTime)
End If
End Sub
|