日付検索で23:59:59まで選択する方法 への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 shu  (社会人) 投稿日時 2017/8/8 15:14:52
DateTimePicker1.Value<DateTimePicker2.Value
として

DateTimePicker1.Value.Date ≦ 対象日時 < DateTimePicker2.Value.Date.AddDays(1)

の範囲で検索されるとよいかと思います。
投稿者 YuO  (社会人) 投稿日時 2017/8/8 13:15:06
DateTimePickerは入力のために使っており,その値を使って検索をしているのであれば,
検索する式を間違えているのだと思います。

単純に考えると,
・比較対象のデータが日付だけを持つ
  その日付が「開始日以降(起点含む) 終了日以前(終点含む)」である
・比較対象のデータが時刻も持つ
  その日時が「開始日の0時ちょうど以降(起点含む)終了日の翌日の0時ちょうど以前(終点含まない)」である
が条件になるはずです。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2017/8/7 15:47:06
> その日のyyyy/MM/dd 0:00:01以降のデータが表示できない状態になってしまっています。

こちらでは再現しません。
「そういう動作をするコード」をどこかに仕込んでしまってはいませんか?

Imports System.ComponentModel
Public Class Form1
    Private WithEvents Label1 As Label
    Private WithEvents Dtp1, Dtp2 As DateTimePicker

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Label1 = New Label() With {.Location = New Point(8, 8), .Text = "Label1", .AutoSize = True}
        Dtp1 = New DateTimePicker() With {.Location = New Point(8, 50)}
        Dtp2 = New DateTimePicker() With {.Location = New Point(8, 90)}

        Dtp1.Format = DateTimePickerFormat.Custom
        Dtp1.CustomFormat = "yyyy/MM/dd HH:mm:ss"

        Dtp2.Format = DateTimePickerFormat.Custom
        Dtp2.CustomFormat = "yyyy/MM/dd HH:mm:ss"

        Me.Controls.AddRange(New Control() {Label1, Dtp1, Dtp2})

        Dtp1.Value = New DateTime(2017, 8, 1)
        Dtp2.Value = New DateTime(2017, 8, 31, 23, 59, 59)
    End Sub

    Private Sub Dtp_ValueChanged(sender As Object, e As EventArgs) Handles Dtp1.ValueChanged, Dtp2.ValueChanged
        Label1.Text = Dtp1.Value.ToString("yyyy/MM/dd HH:mm:ss.fffffff") & "から" & vbNewLine _
                    & Dtp2.Value.ToString("yyyy/MM/dd HH:mm:ss.fffffff") & "まで"
    End Sub

#Region "自・至を逆に入力させたくない場合"
    'Private Sub Dtp1_ValueChanged(sender As Object, e As EventArgs) Handles Dtp1.ValueChanged 
    '    Dtp2.MinDate = Dtp1.Value 
    'End Sub 
    'Private Sub Dtp2_ValueChanged(sender As Object, e As EventArgs) Handles Dtp2.ValueChanged 
    '    Dtp1.MaxDate = Dtp2.Value 
    'End Sub 
#End Region

#Region "自・至を逆に入力させても良いが、入力完了後に入れ替えさせる場合"
    Private Sub Dtp_Validating(sender As Object, e As CancelEventArgs) Handles Dtp1.Validating, Dtp2.Validating
        If Dtp1.Value > Dtp2.Value Then
            Dim swap = Dtp1.Value
            Dtp1.Value = Dtp2.Value
            Dtp2.Value = swap
        End If
    End Sub
#End Region

End Class



> 23:59:59まで指定をしたいのですが
23:59:59.0000000 までということですね。
DateTimePicker は、秒精度を超えるデータを扱えないのでご注意ください。

対象となる日付情報が秒未満の精度を持っていないのであれば良いのですが、
ミリ秒なども保持しているのであれば、
23:59:59.0000001 ~ 23:59:59.9999999 の期間の扱いについても
考慮しておく必要があるかもしれません。
投稿者 (削除されました)  () 投稿日時 2017/8/7 15:45:00
(削除されました)
投稿者 db  (社会人) 投稿日時 2017/8/7 15:07:29
visualstudio2012のwindowsフォーム作成であるプログラムを作成しています。
DateTimePickerを使用して何日(DateTimePicker1)~何日(DateTimePicker2)と日付検索ができるようにしています。
ですが、~何日(DateTimePicker2)の方でその日のyyyy/MM/dd 0:00:01以降のデータが表示できない状態になってしまっています。
DateTimePicker2でyyyy/MM/dd 23:59:59まで指定をしたいのですがどこにどう記述したらよろしいのでしょうか??
お願いします。