Разбор разных строк даты в один формат в VBNet

Я пытаюсь написать программу, которая выведет список всех установленных обновлений Windows и выведет дату самой последней установки. Я упираюсь в стену из-за формата, выводимого из запроса WMI. Мой код ниже:

        Dim dates = New List(Of String)
        Dim datearray = dates.ToArray()
        Try
        Dim searcher As New ManagementObjectSearcher( _
            "root\CIMV2", _
            "SELECT * FROM Win32_QuickFixEngineering")

        For Each queryObj As ManagementObject In searcher.Get()

        dates.Add((queryObj("InstalledOn")))

        Next
        Dim path As String = "C:\Users\Will\outputfile.txt"
        IO.File.WriteAllLines(path, dates)

Я только пишу вывод, чтобы проверить даты, проблема, с которой я сталкиваюсь, заключается в том, что при попытке преобразовать массив в даты возникают исключения из-за того, что дата не находится в требуемом формате. Например, вывод:

12/7/2013
12/7/2013
12/7/2013
6/14/2013
10/7/2011
4/7/2011 

Использование datetime.parse не соответствует требуемому формату.

Как я могу преобразовать массив, чтобы все даты были в одном формате? (и, пожалуйста, обратите внимание, что эти даты — месяц/день/год, и я действительно мог бы использовать их как день/месяц/год.

Я читал форумы и пробовал несколько разных фрагментов кода, которые я нашел, но ничего не помогло!

Просто мысль, но могу ли я что-то сделать с WQL, чтобы экспортировать только последнее обновление?

Заранее спасибо :)


person Will Ryan    schedule 17.01.2016    source источник
comment
WMI ничего не знает о форматах даты .NET. Вы должны преобразовать его самостоятельно.   -  person Hans Passant    schedule 17.01.2016


Ответы (1)


Используйте DateTime.ParseExact или DateTime. TryParseExact можно указать любой формат тебе нравится:

Dim provider As CultureInfo = CultureInfo.InvariantCulture
Dim result as Date = Date.ParseExact("6/14/2013", "M/d/yyyy", provider)
'result is now equal to a valid date - #6/14/2013 12:00:00 AM#
person Neolisk    schedule 17.01.2016