Tôi đang viết một ứng dụng đọc RSS và Thư trong C# (về mặt kỹ thuật MonoTouch).Thư viện phân tích cú pháp DateTime mạnh mẽ cho .NET
Tôi đã gặp vấn đề phân tích cú pháp DateTime
s. Tôi thấy rất nhiều khác biệt về cách ngày được trình bày trong tự nhiên và đã bắt đầu viết một chức năng như thế này:
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;
}
Điều này, tốt, làm cho tôi bị bệnh. Hai điểm. (1) Thật ngớ ngẩn khi tôi nghĩ rằng tôi có thể thu thập một danh sách định dạng sẽ bao gồm mọi thứ ở đó. (2) Nó sai rồi! Lưu ý rằng tôi đang xử lý thời gian ngày EST là UTC (vì .NET dường như không biết đến múi giờ).
Tôi đang tìm thư viện hiện có (chỉ nguồn), được biết là xử lý một loạt các định dạng này.
Ngoài ra, tôi muốn tiếp tục sử dụng Ngày giờ UTC trong suốt mã của mình để bất kỳ thư viện nào được đề xuất đều có thể tạo Ngày giờ.
Có điều gì ở đó như thế này không?
Cập nhật Dường như tôi không rõ yêu cầu của tôi. Tôi đang tìm thư viện biết rất nhiều các chuỗi định dạng hoang dã này. DateTime.Parse/DateTime.TryParse chỉ biết một vài định dạng và chắc chắn chúng không hiểu múi giờ (bạn có thể thấy tôi đã sử dụng nó). Tôi cần một thứ mạnh hơn DateTime.Parse/DateTime.TryParse.
Cập nhật 2 Mọi người đều ở trên thực tế là tôi đã sử dụng Parse thay vì TryParse. Tôi đã chuyển mã. Nhưng nó vẫn còn sai và không đầy đủ.
Cuối cùng Noda-thời gian có thể cung cấp một số chức năng này: http://code.google.com/p/noda-time/ – TrueWill
Có thể muốn xem [datetime-tryparse-all-possible-type-of-date] (http://stackoverflow.com/questions/2326127/datetime-tryparse-all-possible-type-of- date) – nawfal