2013-02-13 2 views
0

Я ищу способ сохранить нули в однозначные месяцы и дни, однако текущий способ, которым я сейчас это делаю, не работает. Я ищу некоторое представление о том, что могло произойти, и если я не буду правильно форматировать.Дата форматирования удаляет нули

В настоящее время я ищу только для форматирования даты в определенный формат, вот мой код:

dateFormat = Today.ToString("MM/dd/yyyy") 

однако значение этого не 02/13/2013 значения я ожидал, что это # 2/13/2013 # удаление всех ведущих нулей. Что здесь происходит и почему оно дает # и удаляет все ведущие нули?

+0

Пожалуйста, покажите остальную часть вашего используемого кода –

+0

Это все, что используется для форматирования даты. Помимо объявления переменной Dim dateFormat As DateTime – Criel

+0

В другом месте должна быть и ошибка. Форматы 'MM' и' dd' всегда дают двузначное число! –

ответ

3

Соответствующий вопрос: Какой тип dateFormat? Если это Date (или DateTime), то форматированная строка будет преобразована обратно в Date, и форматирование будет потеряно. Форматирование работает только в том случае, если вы назначили результат форматирования String. Тип Date не поддерживает форматирование. Форматирование вообще применимо только к строкам.

Dim dateFormat As String 
dateFormat = Today.ToString("MM/dd/yyyy") 

Примечание: Если у вас есть Option Strict Off то VB автоматически пытается преобразовать несовпадающие тип. В вашем коде форматированная строка будет автоматически преобразована в Date, если dateFormat имеет номер Date. Поэтому Option Strict Off опасен, поскольку он скрывает потенциальные ошибки программирования. Я настоятельно рекомендую вам использовать Option Strict On. Вы можете сделать это либо в исходном файле, либо в свойствах проекта в пределах Compile > Option Strict.

При этом вы потеряете некоторые автоматические преобразования, и вам нужно будет указать эти преобразования явно, но вы повысите безопасность своего кода.

Вы можете установить эту опцию по умолчанию для новых проектов в меню Tools > Options, затем перейти к Projects and Solutions > VB Defaults. (По крайней мере, в VS 2008). У меня всегда есть:

 
    Option Explicit On 
    Option Strict On 
    Option Compare Binary 
    Option Infer On 
0

Вы можете использовать правильный путь из VB.NET date formatting

Dim DateFormat As DateTime = Now 
    Console.WriteLine(Format(DateFormat, "Short Date")) 
+0

Это «старый школьный путь», а не «правильный путь» ;-) –

+0

, но подходит для решения, иногда более читаемый, чем новый ': D' – spajce

2

Declare DateFormat как строка:

Dim dateFormat as string = DateTime.Today.ToString("MM/dd/yyyy") 

Что касается "хэшей". This answer объясняет это.

Сам DateTime не содержит хешей, и ни одна из строк нормального формата не приведет к хэшированию.

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