2013-09-18 2 views
1

Я пытаюсь получить часть времени (24 часа) из поля даты и времениString.Format на поле даты и времени

Dim Dt as datetime =#1/1/1900 8:00:00 PM# 
Dim Str as string = String.Format(Dt, "HH:mm") 

который возвращает "1/1/1900 8:00:00 pm"

Что я делаю неправильно здесь?

ответ

3

Используйте переопределены ToString, которая существует на DateTime:

Dt.ToString("HH:mm") 
+0

Ничего себе, этот работает, но что случилось с первым вариантом? – OrElse

+0

String.Format() предназначен для использования заполнителей типа {0}, {1} и передачи значений в качестве параметров. – Jaxedin

3

what was wrong with the first option?

Метод String.Format() имеет 5 перегрузок, ни один из которых имеют два аргумента, которые могут принимать DateTime в качестве первого аргумента. Что будет дальше, зависит от того, каким способом вы хотите использовать Visual Basic. Вы можете поместить это в верхней части файла исходного кода:

Option Strict On 

и компилятор VB.NET получает требователен кода. Теперь вы получите ошибку компиляции времени:

Overload resolution failed because no accessible 'Format' can be called with these arguments

Очевидно, у вас есть поэтому он пытается сделать, чтобы сделать чай из листьев вы даете ему. Существует только одна перегрузка String.Format(), которую все еще можно вызвать, это перегрузка Format (String, Object). С должен был написать такой код:

Dim str = String.Format("The time is {0:HH:mm}", Dt) 

Функция, называемая композитным форматированием. В вашем случае этот метод можно вызвать только в том случае, если компилятор VB.NET сначала преобразует DateTime в строку автоматически. Фактически вы будете звонить:

Dim str = String.Format("1/1/1900 8:00:00 pm", "HH:mm") 

Который не делает то, что вы надеялись.

Обычно лучше всего изучить кодирование VB.NET, всегда включив опцию Strict. И только выключите его, когда вы знаете язык достаточно хорошо, чтобы выжить в таких случаях. Вы можете указать Visual Studio на всегда включить эту опцию. Инструменты + Опции, проекты и решения, значения VB по умолчанию и изменение параметра «Строгий выбор» на «Вкл.».

Смежные вопросы