2016-11-14 210 views
0

如何串 20160928063905.000000 + 480 着決心轉化爲日期時間的ListView vb.net與解析字符串日期時間格式installdate

Win32_OperatingSystem InstallDate

Screenshot

   Else 
        log.BackColor = Drawing.Color.Aqua 
        log.SubItems(1).Text = client.Machine_Name 
        log.SubItems(2).Text = client.Network_Information.IPAddress(0) 
        log.SubItems(3).Text = DateTime.Now.ToShortDateString() 
        log.SubItems(4).Text = client.Network_Information.Name ' caption 
        log.SubItems(5).Text = client.Network_Information.InstallDate 
        log.SubItems(6).Text = client.Network_Information.ID 
        log.SubItems(7).Text = client.Network_Information.Manufacturer 

       End If 

     Next 

     Dim item As New ListViewItem 
     item.Text = EventLogListView.Items.Count + 1 
     item.SubItems.Add(client.Machine_Name) 
     item.SubItems.Add(client.Network_Information.IPAddress(0)) 
     item.SubItems.Add(DateTime.Now.ToShortDateString()) 
     item.SubItems.Add(client.Network_Information.Name) 'captions 
     item.SubItems.Add(client.Network_Information.InstallDate) 
     item.SubItems.Add(client.Network_Information.ID.ToString) 
     item.SubItems.Add(client.Network_Information.Manufacturer) 


     item.BackColor = Drawing.Color.Aqua 
     EventLogListView.Items.Add(item) 
+0

這很難讀[?如何提問](http://stackoverflow.com/help /如何問)採取[旅遊](http://stackoverflow.com/tour)並寫一個或兩個完整的句子與你的問題所需的信息? –

+0

對不起,我的問題是如何將此字符串轉換爲20160928063905.000000 + 480這種格式yyyyMMdd在listview中。對不起英語 –

回答

1

System.Management命名空間在.NET包括用於將編碼的WMI日期的方法。

Dim installDT = ManagementDateTimeConverter.ToDateTime(wmiDateString) 

鑑於"20160928063905.000000+480"結果我的系統上的字符串是:

2016年9月27日17:39:05.000

翻錄了串數據導致不同的值:

2016年9月28日06:39:05.000

的原因,它是錯誤的,因爲偏移信息在第一步丟棄:

dateStr.Substring(0, dateStr.IndexOf(".", StringComparison.Ordinal) 
+0

生病請嘗試這一個也謝謝 –

+0

遵循這種格式,但我仍然得到了SqlDateTime溢出。必須介於1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之間 –

1

你可以使用這樣的功能在設置視圖中的文本之前更改日期的格式:

Public Function GetDateFromWin32Date(dateStr As String) As String 
     Dim newDateStr = dateStr.Substring(0, dateStr.IndexOf(".", StringComparison.Ordinal)) 
     Dim newDate = DateTime.ParseExact(newDateStr, "yyyyMMddHHmmss", CultureInfo.InvariantCulture) 
     Return newDate.ToString("yyyyMMdd") 'Use the format you'd like to display 
End Function 

或者在一個單一的線路:

log.SubItems(5).Text = DateTime.ParseExact(client.Network_Information.InstallDate.Substring(0, client.Network_Information.InstallDate.IndexOf(".", StringComparison.Ordinal)), "yyyyMMddHHmmss", CultureInfo.InvariantCulture).ToString("yyyyMMdd") 

而且使用它是這樣的:

log.SubItems(5).Text = GetDateFromWin32Date(client.Network_Information.InstallDate) 
... 
item.SubItems.Add(GetDateFromWin32Date(client.Network_Information.InstallDate)) 
+0

非常感謝您bro –

相關問題