2009-11-13 37 views
0

我需要將所有的日期時間值轉換爲字符串,儘管我的項目中,我最後的所有代碼都遵循1個函數,其中我有4個不同的哈希表(實際上是CookComputing xmlrpc庫的XmlRpcStruct對象)。如何從所有散列表值中過濾出DateTime類型的值?

是否有任何方式,沒有迭代每個散列表 - 我可以轉換具有日期時間 - >字符串的散列表的值。

沒有迭代 - 我的意思是隻是爲了加快處理速度,但我需要解決它的嵌套哈希表,其中密鑰也包含另一個哈希表。

+0

您能否提供一些關於如何填寫哈希表以及如何將它們發送到服務器的詳細信息? – FrenchData 2009-11-13 10:34:50

回答

1

您可以在發送到該服務器之前處理您的哈希表。檢查每個對象。它確實是一個DateTime,然後用適當的格式替換爲.ToString。

public static void ProcessHT(Hashtable ht) 
{ 
    Hashtable dates = new Hashtable(); 

    foreach(DictionaryEntry de in ht) 
    { 
     if (de.Value is DateTime) 
      dates.Add(de.Key, de.Value); 
    } 

    foreach(DictionaryEntry de in dates) 
    { 
     ht.Remove(de.Key); 
     ht.Add(de.Key, ((DateTime)de.Value).ToString("s")); 
    } 
} 

public static void RunSnippet() 
{ 
    Hashtable ht = new Hashtable(); 

    ht.Add("1", "one"); 
    ht.Add("date", DateTime.Today); 
    ht.Add("num", 1); 
    Print(ht); 
    WL("---"); 
    ProcessHT(ht); 
    Print(ht); 
} 

private static void Print(Hashtable ht) 
{ 
    foreach (DictionaryEntry de in ht) 
    { 
     WL("{0} = {1}", de.Key, de.Value); 
    } 
} 
+0

如果我有嵌套的散列表,我發現一些我的散列表本身包含另一個散列表。 (汗) – shahjapan 2009-11-13 12:21:43

+0

這有點擊敗你的問題的目的,因爲你問有沒有辦法轉換所有的DateTime值沒有迭代....這是迭代。 – James 2009-11-13 12:41:53

+0

是的詹姆斯,但我現在反覆迭代現在造成嵌套哈希表錯誤。 – shahjapan 2009-11-13 12:45:09

0

爲什麼不能將日期轉換爲將它添加到散列表中的時間?

myHashTable.Add("ADate", DateTime.Now.ToString()); 
+0

,因爲DateTime超過150次,開發人員將來可能會忘記將其轉換爲字符串,直到現在我們使用將DateTime傳遞給Server,而現在Server不接受DateTime的更新版本! ! |) – shahjapan 2009-11-13 09:37:02

+0

它是如何傳遞給服務器的?完整的散列表或散列表是否迭代並傳遞了單個值? – James 2009-11-13 09:45:44

+0

完整的散列表已通過! – shahjapan 2009-11-13 11:19:41