2014-10-02 61 views
0

我的真正目的是從Date32 GetDetailsOf擴展日期字段DateTime.Parse日期字符串。 在進一步調試時,我只是創建了一個看起來相同的字符串,並且DateTime能夠解析它。當我在Memory中查看2個字符串時,它們顯得不同。僅作爲shell32獲取的字符串GetDetailsOf永遠不會出現相同的'=='硬編碼字符串。無法用DateTime.Parse解析

的前幾個字節.....

S> 4C 22 63 2E 16 00 00 00 0E 20 39 00 2F 00 0E 20 35 00 2F

Q> 22 4C 2E 63 11 00 00 00 39 00 2f 00 35 00 2f 00 32 00 30

有沒有格式化字符串的方法,以便我可以使用DateTime.Parse解析它?

 Shell32.Shell shell = new Shell32.Shell(); 
     Shell32.Folder objFolder; 
     objFolder = shell.NameSpace(folder); 
     int i = 0; 
     foreach (Shell32.FolderItem2 item in objFolder.Items()) 
     { 
      if (item.Type == "Windows Recorded TV Show") 
      { 
       mediaArray[i, 0] = objFolder.GetDetailsOf(item, 21); // serName 
       mediaArray[i, 1] = objFolder.GetDetailsOf(item, 254); // epName 
       mediaArray[i, 2] = objFolder.GetDetailsOf(item, 259); // desc 
       mediaArray[i, 3] = objFolder.GetDetailsOf(item, 258); // broad Date 


       DateTime dateValue; 
       CultureInfo culture; 
       DateTimeStyles styles; 
       styles = DateTimeStyles.AssumeLocal; 
       culture = CultureInfo.CreateSpecificCulture("en-US"); 
       string s = mediaArray[i, 3].Normalize(); // Guessing this string isn't ASCII?           
       string q = "9/5/2014 12:00 AM";   
       if (s == q) { MessageBox.Show("They are the same."); } // Never Entered.): 
       MessageBox.Show(s+"\n"+q); // They appear exactly the same! 

       dateValue = DateTime.Parse(q, culture, styles); // parses correctly 
       dateValue = DateTime.Parse(s, culture, styles); // fails at runtime 


       i++; 
      } 
     } 
+0

您如何知道第二行在第一行失敗時是否正確解析? – 2014-10-02 16:19:53

+0

公平的問題,但我實際上只是在運行時間之前更改變量。當我發佈這個問題時,我複製了該行並將它放錯了順序......我將更新原始帖子,以免丟掉其他人。 – ttugates 2014-10-02 16:22:22

回答

2

How can I extract the date from the "Media Created" column of a video file?

嗯,我在這裏找到了答案..

,因爲昨天晚上我一直在尋找,當我終於發佈問題,我覺得30分鐘內回答。

顯然,字符(char)8206(char)8207存在於GetDetailsOf的字符串s中。當我MessageBox.Show()它們時,這些字符看起來是不可見的,但從來沒有減少它們解決我的問題。

// These are the characters that are not allowing me to parse into a DateTime 
char[] charactersToRemove = new char[] 
{ 
    (char)8206, 
    (char)8207 
}; 

    // Removing the suspect characters 
    foreach (char c in charactersToRemove) 
    value = value.Replace((c).ToString(), "").Trim(); 

我知道==和String.Equals之間的區別。但我特別使用==來調試問題。

我找到了字符8206和8207,試圖通過另一篇文章的幫助刪除它們。有沒有人關心我在調試時如何找到這些無形字符?

相關問題