簡體   English   中英

.net c#字符串到DateTime GMT + 0或UTC(任何/未知格式)

[英].net c# string to DateTime GMT+0 or UTC (from any/unknown format)

我需要從RSS feed解析並添加到數據庫日期。 有一個問題,一個是“星期三,2013年5月8日EDT”,另一個是EST,另一個是CET,另一個是“ 2013年12月23日,星期一21:45:32 +0200”。 收到EDT時解析失敗。 這是因為我使用過:

CultureInfo provider = CultureInfo.InvariantCulture;
var format = "ddd, dd MMM yyyy hh:mm:ss EST";
DateTime postTime;
//<... make f.pubDate to have date string ...>
var convertionResult = DateTime.TryParse(f.pubDate, out postTime);
if (!convertionResult)
{
    postTime = DateTime.ParseExact(f.pubDate, format, provider);
    //<...>
};

有沒有通用的方法可以做到這一點,我肯定會缺少一些東西:)

謝謝!

我不相信.NET框架中可以解析時區縮寫的任何內容-出於充分的理由,因為它們不是全局唯一的。 老實說,RSS使用這種令人討厭的日期/時間格式是很可惜的。

您可能最好有一個從“時區縮寫”到“時區偏移”的查找表。

自定義日期和時間格式的“ zzz”部分可能會解析“ +0200”部分-使用Noda Time,您可以明確指定該部分。 如果.NET無法立即處理它,則可以在正確的位置添加一個冒號,這樣就可以了。

另一個選擇是找到一個現有的RSS解析器,為您完成所有這些操作-我確定您不是遇到此問題的第一個人。

好的,我找到了解決方案。

該項目代碼/想法有助於解決此問題。 這個家伙-Ashot Aslanyan-已將轉換器編寫為時間戳(以及cource:D的整個RSS閱讀器)。

此處來源: http//rssreadercs.codeplex.com/SourceControl/latest#trunk/RSSReader/RssReader/RSSReader.cs

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM