2015-12-21 4 views
0

from string dataIni = "2015/12/21 18:28", я бы хотел разобрать его в том же формате DateTime. Я использую следующий код,VB Net String to DateTime

Dim dataIni = "2015/12/21 18:28" 
Dim dataIniParsed As DateTime = DateTime.ParseExact(dataIni, "yyyy/MM/dd HH:mm", System.Globalization.CultureInfo.InvariantCulture) 

Однако я получаю "21/12/2015 6:28:00 PM". Как получить желаемый формат?

+4

Этот фрагмент является чем-то вроде частичного. Если вы проанализируете его в DateTime var, все готово. Даты не имеют формата; формат - это то, как оно отображается ('dtIni.ToString (" yyyy/MM/dd HH: mm ")') или сохраняется как текст – Plutonix

+0

oh sure ... Тогда у меня есть dataTable, связанный с моим DatagridView, а в столбце - формат DataeTime. Как только я делаю обратную операцию, DateTime в String, он формируется, как я желаю. Спасибо! – Jaume

ответ

1

После того, как вы разобрали текст в DateTime вы больше не имеют «формат», как DateTime тип данных, который просто представляет собой время и дату, без какого-либо определенного формата. Это происходит только тогда, когда вы делаете .ToString() или Console.WriteLine(...), например, что DateTime преобразуется в строку.

Теперь по умолчанию .ToString() создает строковый формат, основанный на ваших системных настройках. У вас явно получается "21/12/2015 6:28:00 PM". В моей системе я использую формат даты ISO, поэтому мой .ToString() производит "2015/12/21 18:28:00" для вашей даты.

Вы можете легко создавать пользовательские форматы. Попробуйте этот код:

Dim dataIniFormatted As String = dataIniParsed.ToString("yyyy/MM/dd HH:mm") 

Это производит строку "2015/12/21 18:28". Обратите внимание, что это уже не DateTime - это строка, а также то, что dataIniParsed по-прежнему DateTime (без встроенного форматирования).

-1

Вы можете использовать следующий код для форматирования переменной Date. Вы должны отформатировать дату, чтобы получить желаемый результат.

Dim dataIni As String = "2015/12/21 18:28" 


    Dim dataIniParsed As DateTime 
    dataIniParsed = Convert.ToDateTime(dataIni) 

    MsgBox(dataIniParsed & " - " & dataIniParsed.ToString("yyyy/MM/dd HH:mm") & " - " & dataIniParsed.GetType.ToString)