Как перенести формат времени «чч: мм тт» из ячейки данных Datagridview в datetimepicker? - PullRequest
0 голосов
/ 11 июля 2020

Я пытался сделать следующее: где StartTime EndTime - Datetimepicker

   StartTime.Value = "01/01/2010 " & DGVEvemts(1, DGVEvemts.Rows.Count - 1).ToString("hh:mm tt")

    EndTime.Value = "01/01/2010 " & DGVEvemts(2, DGVEvemts.Rows.Count - 1).ToString("hh:mm tt")

Ответы [ 2 ]

2 голосов
/ 11 июля 2020

Вы вообще не должны использовать Strings. НЕ выполняйте преобразование между DateTime и String по любой причине, которая не требует использования String в качестве вывода, например, для отображения или сериализации, или в качестве ввода, например, при чтении файла или пользовательского ввода с консоли. Если вы начинаете с DateTime и хотите закончить на DateTime, тогда не должно быть промежуточных Strings.

Предполагая, что ваш DataGridView содержит DateTime значений, вы можете сделайте это:

StartTime.Value = #1/01/2010# + CDate(DGVEvemts(1, DGVEvemts.Rows.Count - 1)).TimeOfDay

Это создает литерал Date, получает Date из сетки, получает временную часть из этого Date и добавляет его к литералу. Если время в сетке может содержать неполные минуты, а вам нужны только целые минуты, вы можете сделать это:

Dim dt = CDate(DGVEvemts(1, DGVEvemts.Rows.Count - 1))

StartTime.Value = #1/01/2010# + New TimeSpan(dt.Hours, dt.Minutes, 0)
0 голосов
/ 11 июля 2020
    If DGVEvemts.Rows.Count < 1 Then Return
   
    RecStTxt.Text = "01/01/2010 " & DGVEvemts(1, DGVEvemts.Rows.Count - 1).Value.ToString()
    RecEndTxt.Text = "01/01/2010 " & DGVEvemts(2, DGVEvemts.Rows.Count - 1).Value.ToString()
    StartTime.Value = RecStTxt.Text
    EndTime.Value = RecEndTxt.Text
    
...