Fra*_*ger 7 .net datetime parsing xamarin.ios
我正在用C#(技术上是MonoTouch)编写RSS和Mail阅读器应用程序.
我遇到了解析DateTimes 的问题.我看到日期在野外呈现的方式有很多差异,并开始编写这样的函数:
static string[] DateTimeFormats = new string[] {
"ddd, d MMM yyyy H:mm:ss \"GMT+00:00\"",
"d MMM yyyy H:mm:ss \"EST\"",
"yyyy-MM-dd\"T\"HH:mm:ss\"Z\"",
"ddd MMM d HH:mm:ss \"+0000\" yyyy",
};
public static DateTime ParseTime(string timeStr) {
var r = DateTime.MinValue;
var styles = DateTimeStyles.AdjustToUniversal |
DateTimeStyles.AllowWhiteSpaces;
if (DateTime.TryParse(timeStr,
CultureInfo.InvariantCulture,
styles,
out r)) {
return r;
}
else {
if (DateTime.TryParseExact(timeStr,
DateTimeFormats,
CultureInfo.InvariantCulture,
styles,
out r)) {
return r; // BUGGY! Ignores time zone!!
}
}
Console.WriteLine ("BAAAAAAAAAAAAD");
return DateTime.MinValue;
}
Run Code Online (Sandbox Code Playgroud)
这让我感到恶心.两点.(1)我认为我实际上可以收集一份涵盖所有内容的格式列表,这对我来说很愚蠢.(2)这是错的!请注意,我将EST日期时间视为UTC(因为.NET似乎无视时区).
我正在寻找一个已知的处理大量这些格式的现有库(仅限源代码).
此外,我想在我的代码中继续使用UTC DateTimes,因此建议的任何库都应该能够生成DateTimes.
这有什么事吗?
更新我的请求似乎不清楚.我正在寻找一个知道很多这些狂野格式字符串的库.DateTime.Parse/DateTime.TryParse只知道几种格式,他们肯定不懂时区(你可以看到我已经在使用它了).我需要比DateTime.Parse/DateTime.TryParse更强大的东西.
更新2每个人都在思考我使用的是Parse而不是TryParse.我已经切换了代码.但它仍然是错误和不完整的.