Проблема с форматом даты в vb.net

Я пытаюсь разобрать дату из текстового поля и сохранить ее в переменной даты.

Dim enddt_2 As Date = Date.ParseExact(txtenddt.Text, "dd/MM/yyyy", System.Globalization.DateTimeFormatInfo.InvariantInfo)  'txtenddt.Text
expenddt_1 = enddt_2.AddDays(-1)
enddt = enddt_2.ToString("dd/MM/yyyy")

enddt - это переменная даты, и когда я конвертирую enddt_2 в строку, я получаю ошибку как

Conversion from string "17/01/2012" to type 'Date' is not valid.

Поясню, если значение в текстовом поле 17/01/2012, то после синтаксического анализа значение изменяется на 17/01/2012 (регион моей системы и Язык: дд/мм/гггг) в enddt_2, и когда я пытаюсь преобразовать в формат дд/мм/гггг и сохранить в переменной даты, я получаю указанную выше ошибку. Эта ошибка возникает только для дат после 12. т.е. переменная даты принимает дату в формате ММ/дд/гггг. Даты до 12 работают нормально, т.е. для всех дат с 1 по 12 ошибки нет.

Как я могу заставить enddt хранить дату в формате дд/мм/гггг.


person Ishan    schedule 03.01.2012    source источник


Ответы (2)


Переменная enddt является переменной Date, и вы не можете присвоить ей строковое значение и не можете изменить свои региональные настройки или даже формат даты/времени.

Измените тип enddt, если вы хотите сохранить строку даты.

 Dim enddt as String = enddt_2.ToString("dd/MM/yyyy")
person kv-prajapati    schedule 03.01.2012
comment
Я хочу, чтобы это была переменная даты, так как мне нужно использовать эту переменную даты позже в коде. - person Ishan; 03.01.2012
comment
@Ishan - Если вы настроите свои региональные настройки, вам не нужно конвертировать. Просто проверьте MsgBox(Date.Now.Today) и MsgBox(enddt_2.ToDay) - person kv-prajapati; 03.01.2012

ты пробовал это?

Dim enddt_2 As Date = DateTime.ParseExact("17/01/2012", "dd/MM/yyyy", _
                      System.Globalization.CultureInfo.InvariantCulture)
Dim newD As Date = enddt_2.AddDays(-1)

Dim xStr As String = "Original Date: " & enddt_2.ToString("dd/MM/yyyy") & vbCrLf
xStr &= "FormatedOriginalDate: " & enddt_2.ToString("MM/dd/yyyy") & vbCrLf
xStr &= "NewDate: " & newD.ToString("MM/dd/yyyy")
Console.Writeline(xStr)

Выход:

Original Date:         17/01/2012
FormatedOriginalDate:  01/17/2012
NewDate:               01/16/2012
person John Woo    schedule 03.01.2012