VB.NET : Преобразовать дату дд / мм / гг в дд / мм/гггг

#vb.net

#vb.net

Вопрос:

Мне нужно автоматически преобразовать дату дд / мм / гг в дд / мм / гггг. Пример: если я вставлю в текстовое поле «12/01/90», программа должна автоматически преобразовать текст в «12/01/1990» или «01/01/20» в «01/01/2020».

Кроме того, я должен проверить дату, чтобы убедиться, что она правильная. Пример: если я введу «80/70/2000», это должно выдать мне ошибку, потому что дата не существует. Как я могу это сделать? Заранее спасибо.

Комментарии:

1. TryParse , затем ToString .

Ответ №1:

Если у вас есть входные данные в виде строки, вы должны сначала разобрать ее в дату с помощью спецификатора формата, а затем преобразовать ее обратно в строку.

 Dim input as String = "22/03/19" ' dd/mm/yy
Dim dt as DateTime = DateTime.MinValue
If (DateTime.TryParseExact(input,
                            "dd/MM/yy",
                            System.Globalization.CultureInfo.InvariantCulture,
                            System.Globalization.DateTimeStyles.None,
                            dt
)) Then
    Dim output as String = dt.ToString("dd/MM/yyyy")
    Console.WriteLine(output)
else
    Console.WriteLine("Error")
end if
  

Вывод:

22/03/2019

Вы можете попробовать это здесь

Комментарии:

1. Для справки, приведение не изменяет тип объекта, так что это не приведение, а скорее преобразование. Приведение было бы, если бы у вас уже было Date значение, но оно было присвоено Object переменной.

2. Исправлено @jmcilhinney