2012-05-22 52 views
3

我試圖將一個字符串解析爲以下格式日期時間:刪除時區爲DateTime.ParseExact

[日],[日期] [月] [年] [時間] [AM/PM] [時區(例如:)

「週四,2011年12月1日下午8點30 EST」

我使用DateTime.ParseExact與格式做到了這一點( 「DDDD,DD MMM YYYY HH:MMTT」) 。然而,timzone正在給我一個問題。沒有讀取用這種方式編寫的時區的代碼。無論如何,我並不關心時區,所以我想要將它剝離出來或者只讀parsexact。

刪除它的一種方法是實際從字符串中刪除它(使用.Replace) - 但是我不知道源會產生多少個不同的時區,無論如何,我認爲一長串替換看起來很醜陋,容易出錯。

那麼有沒有一種方法去除它,或閱讀它(然後我可以忽略它)?

+1

如果時區始終存在,則可以在最後一個空格處剪切字符串,然後解析其他所有內容。 – dasblinkenlight

+0

@dasblinkenlight 嗯,這是一個非常好的主意。如果有更乾淨的做法,我會更喜歡,但這是一個很好的解決方案。 – Aabela

+0

你真的想忽略它嗎?這將是更相關的情況下,你可以取代EST與差異(哦,我的上帝天節約光),然後解析。 – V4Vendetta

回答

0

您可以掃描字符串的空格,並在第五個空格之後剪切所有內容。如果只有四個空格,則保留整個字符串(這意味着沒有時區)。

這個答案已被編輯Jon發表評論。

+0

在第五個空間切割而不是在最後一個切割可能會更好。你永遠不知道什麼時候該時區名稱可能以某種方式獲得一個包含空格的可讀組件。 – Jon

+0

@Jon你是對的,謝謝你的一個很好的建議:在第五個空間切割(如果存在的話)即使時區不存在也能工作! – dasblinkenlight

+0

(我使用了「LastIndexOf('')」來代替。給出了非常敏感的ParseExact是如何的,如果有任何改變,它會破壞任何東西 – Aabela